androidx メモ

Kenji Abe
4 min readMay 10, 2018

--

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.propertiesandroid.enableJetifier=true というのがあったと思うのですが、これを設定しないと、使ってるライブラリのほうがandroidxに変更されません。

Jetifierについてはこのセッションで軽く紹介されてました。

まとめ

androidxはまだ対応しなくても大丈夫そうですが、今後のために使ってるライブラリなどで問題なりそうなのはチェックしておいたほうが良いかと思います。

ライブラリ側はどう対応するのが良いのだろう…??

--

--

Kenji Abe

Programmer / Gamer / Google Developers Expert for Android, Kotlin / @STAR_ZERO