個人で作っているアプリを、SupportライブラリからAndroidxに移行した。
いくつかハマりどころがあった。
基本的には、
- Android Studioを3.2 Canaryに変更する
- Android Gradle Pluginを
3.2.0-alpha17
以降に上げる targetSdkVersion
とcompileSdkVersion
を28に変更- Android Studioで
Refactor > Refactor to AndroidX
でコード書き換え
でOK、らしい。
ただbuild.gradle
で指定していたライブラリの依存関係が、変数使って外出ししていた関係か更新されなかった。
そこは公式の新旧アーティファクトID対応表を見て自分で修正する必要があった。
他にもいくつかあって、
ConstraintLayout
のパッケージ名がandroidx.constraintlayout.widget.XXXX
(実際はandroidx.constraintlayout.XXXX
)- androidx系のクラスがfully qualified nameでコード内に書かれてしまうので、importに変更する
- 一部クラスがそもそもimport文消された上にfully qualified nameに更新されず、参照エラーになってしまうのでimport文追加する
- 私の環境ではArchitecture Componentsの
ViewModel
系がこのパターンになっていた?
- 私の環境ではArchitecture Componentsの
だいたいこんな感じ。
dagger-androidとかサポートライブラリに依存してるやつは勝手に修正してくれるらしく、そのまま使うことができた。
参考: Convert the project to androidx. by thagikura · Pull Request #436 · google/flexbox-layout
※2018/06/13追記
ConstraintLayout 1.1.2がリリースされ、上記のパッケージが違う問題は修正されました。