HOME技術AndroidAndroidアプリ:AndroidXに対応する

Androidアプリ:AndroidXに対応する

2018年に、AndroidのSupportLibraryは、AndroidXに移行することが発表されました。

AndroidXとは

Support Libraryとは簡単に言うと、Androidアプリ開発において必要なプログラム群のことです。
このライブラリは、様々な種類のユーティリティ(端末固有のUX、デバッグ、テストほか)が存在し、利活用されていくなかで膨大な量に成長してきました。
今では大量に存在するライブラリが、混乱の原因になりつつあります。
これを解消するためにライブラリを体系化してまとめなおしたものがAndroidXです。

ライブラリのバージョンは、これまでのところ28.0.0が最新バージョンでしたが、AndroidXでは1.0.0に戻ります。

ライブラリがまとめなおされるということは、既存のアプリでAndroidXに対応していないアプリは、修正しなければなりません。具体的にはライブラリ名を変更することになります(そのほかの部分も修正が必要になります)。
もちろん、修正せずに今までのライブラリでも動作は問題なく行われます。

既存のアプリをAndroidX対応にする

Android Studioを使用していると、起動時にbuild.gradleのバージョンをアップデートすることがあります。
build.gradleのバージョンが3.2.0以降になると、AndroidXに対応することができるようになります。そのため、既存のサポートライブラリのままだとAndroidXのライブラリと重複が起き、ビルドするときにエラーの原因になります。

これが煩わしいので、build.gradleをアップデートしないという選択肢もあります。
それでもいつかは直面する問題かもしれないため、今から既存アプリをAndroidXに対応させることにしました。

まず、build.gradleを最新版に設定します。
AndroidStudioを起動して、プロジェクトが読み込まれた時点でアップデートするか聞かれた場合には、そのままアップデートします。
手動でアップさせる場合には、
gradle-wrapper.properties
というファイルを開き、

distributionUrl=https\://services.gradle.org/distributions/gradle-*.*.*-all.zip

の「*」部分を最新バージョンにします。
現時点では、5.1.1が最新版なので、それを指定します。

AndroidStudioの「Refactor」→「Migrate to AndroidX…」をクリックします。
現在のプロジェクトをzip保存するかと聞かれますので、念のために「Backup project as Zip file」にチェックを入れて、「Migrate」をクリックします。
通常だと、これだけでこれまでのサポートライブラリは自動的にAndroidX対応になります。
しかし、私の場合は何も起きなかったので、手動でライブラリを書き換えました。

サポートライブラリを書き換える

サポートライブラリを書き換える場合には、以下のURLに書き換え先の名称が書かれています。

https://developer.android.com/jetpack/androidx/migrate

gradle.propertiesに追記する

gradle.propertiesを開き、以下の2行を追記します。

android.useAndroidX=true
android.enableJetifier=true

以上でビルドしたところ、エラーもなくビルドできました。

関連記事

Androidアプリ:ボタンやEditTextに背景色・枠線をつける

Android Studioで、ボタンやEditTextに背景色や枠線をつける方法です。 コントロールの見た目の設定をするには、別途専用のxmlファイルを生成して、そこに書いた設定を読み込むようにしま…続きを読む

Androidアプリ:ClassNotFoundExceptionエラー

Google Play Consoleのクラッシュ報告で、「ClassNotFoundException(ac.loadClass)」というログが表示されていたので、調べました。 恐らくAdmobのS…続きを読む

Androidアプリ:Android StudioでデバッグしようとするとPlease select Android SDKと表示される

Android Studioを使っていて、動作確認するために実行(run)をすると、ADVが起動せず、「Error: Please select Android SDK」と表示されてしまった場合の復旧…続きを読む

Androidアプリ:画面遷移時に値を渡す

Androidで画面遷移時に値を渡す方法です。 数値を渡す場合 MainActivity.java public class MainActivity extends Activity { @Over…続きを読む

Androidアプリ:ボタンやEditTextを角丸にする

Android StudioでボタンやEditTextを配置して、角丸にします。 角丸や色などを指定する場合には、それ専用のxmlファイルを別途用意し、読み込ませるようにします。 ボタンの背景色と角丸…続きを読む

Androidアプリ:背景に画像を指定する

Android Studioを使って、背景に画像を設定する方法です。 背景画像を格納する 今回は以下の画像を使います。 画像サイズなどは適当につくります。 Androidは様々な解像度がありますが、画…続きを読む

Androidアプリ:ボタンの表示/非表示

Androidでボタンの表示/非表示をプログラム上からコントロールします。 MainActivity.java   Button button = findViewById(R.id.but…続きを読む

Androidアプリ:ERROR: This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled.

Android Studioでビルドしようとしたら、「ERROR: This project uses AndroidX dependencies, but the ‘android.us…続きを読む

Androidアプリ:ボタンやEditTextに余白(パディング)を設定する

Android StudioでボタンやEditTextに余白(パディング)を設定します。 余白の設定はレイアウトファイル(activity_main.xml)を編集します。 activity_main…続きを読む

Androidアプリ:Firebaseを利用したAdMobの実装方法

AndroidアプリでFirebaseを利用したAdMobの実装方法を調べました。 なお、FirebaseおよびAdMobには既にユーザ登録済みであることを想定しています。 未登録の場合は先に登録して…続きを読む