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アプリ:入力された数値を足して表示する

2つのテキストボックスに入力した数値を受け取り、それぞれを足した結果を表示するアプリをつくります。 ここではレイアウト定義ファイルを「activity_main.xml」、 プログラムファイルを「Ma…続きを読む

Androidアプリ:エラー「ScrollView can host only one direct child」

Android StudioでScrollViewを設定して動作確認しようとすると、「ScrollView can host only one direct child」というエラーが出て動作確認でき…続きを読む

Androidアプリ:App is not indexable by Google Search;と表示される

Android Studioで、 App is not indexable by Google Search; consider adding at least one Activity with a…続きを読む

Androidアプリ:When using intent filters, please specify ‘android:exported’ as well

Android Studioで「When using intent filters, please specify ‘android:exported’ as well」という…続きを読む

Androidアプリ:ClassNotFoundExceptionエラー

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

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

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

Androidアプリ:レイアウトの途中にスクロールを入れる

Androidアプリで以下のようなレイアウトを組む方法です。 weightSumを使う 上、中央、下のパーツに分けて、上下のパーツは固定、中央のパーツはスクロール可能にします。 最初にLinearLa…続きを読む

Androidアプリ:動画を再生する

Androidアプリで動画を再生する方法です。 読み込み時は最初の1コマ目をプレビューしている状態で静止しています。 MainActivity.java javaのソースには以下のように記します。 こ…続きを読む

Androidアプリ:ポリシー違反の警告への対応(APIレベル)

Google Play Console上で、アプリにポリシー違反の警告が表示されていました。 「お客様のアプリはGoogle Playデベロッパープログラムポリシーを遵守していないため、まもなく措置を…続きを読む

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

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