Google I/O 2018に合わせて、AndroidXがリリースされました。
Supportライブラリ、DataBinding、Architecture Componentsなどのパッケージが android.*
から androidx.*
に変更になります。
これは今すぐすべて変更されるのではなく、現状は移行期間みたいな感じになります。android.support
などは 28.0.0
の正式リリースが最後にそれ以降は androidx.*
のみが更新される予定です。
今すぐ対応する場合は、Android Studio 3.2 Canary14の Refactor to AndroidX...
で変更することが出来ます。
詳しいことは以下のAndroid Developers Blogを見てもらえれば。
で、ここから色々試したメモです。
Gradleプラグイン
先程のAndroid Developers Blogに書いてる通り、androidxへの変換はAndroid Gradle Plugin 3.2.0-alpha14がやってくれてます。
Refactor to AndroidX...
をすると、 gradle.properties
に以下の2行が追加されます。
android.enableJetifier=true
android.useAndroidX=true
コードが無いので推測ですが、このプロパティを見てGradleプラグインが変換しているようです。
ライブラリがSupportライブラリを使ってる時
アプリがAndroidXに対応していて、使用してるライブラリが依存してるSupportライブラリがどうなるか試しました。
dependencies {
implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' implementation "com.github.hotchemi:permissionsdispatcher:3.2.0"
kapt "com.github.hotchemi:permissionsdispatcher-processor:3.2.0"
}
例としてPermissionsDispatcherで試します。PermissionsDispatcherでは、 com.android.support
に依存しています。
Refactor to AndroidX...
してから、依存関係を確認すると以下のようになりました。
\--- com.github.hotchemi:permissionsdispatcher:3.2.0
+--- androidx.core:core:1.0.0-alpha1 (*)
\--- androidx.legacy:legacy-support-v13:1.0.0-alpha1
\--- androidx.legacy:legacy-support-v4:1.0.0-alpha1
パッケージが androidx
に変更されています。さらに legacy
となっています。おそらく、前のパッケージ名のものは legacy
をつけてる感じがしますね。
AnnotationProcessor/kapコード生成
コード生成を行ってるようなライブラリでは注意が必要で、例えば
import android.support.v4.app.ActivityCompat
というコードを生成してると見つからないのでビルドが通らなくなります。
Known issuesにも書いてありますが、 dagger-android
なんかもまだ対応できてないですね。
Jetifier
JetifierはAAR/JARのマイグレーションツールで、ライブラリが使ってるSupportライブラリなどをandroidxに置き換えてくれるツールです。
gradle.properties
に android.enableJetifier=true
というのがあったと思うのですが、これを設定しないと、使ってるライブラリのほうがandroidxに変更されません。
Jetifierについてはこのセッションで軽く紹介されてました。
まとめ
androidxはまだ対応しなくても大丈夫そうですが、今後のために使ってるライブラリなどで問題なりそうなのはチェックしておいたほうが良いかと思います。
ライブラリ側はどう対応するのが良いのだろう…??