Android
AndroidStudio
AndroidX

Android Studio3.2の「Migrate to AndroidX」を試す

やりたい事

AndroidXパッケージを試したい

せっかくなので、Android StudioのAndroidX変換機能を試してみたい!

AndroidXについてはGoogle Developerのブログを読むべし
Google Developers Japan: AndroidX の紹介

環境

Android Studio 3.2 Beta 2
Build #AI-181.5281.24.32.4860949, built on June 26, 2018
JRE: 1.8.0_152-release-1136-b04 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.12.6
  • Android Studio 3.2のベータ版をインストール済み
    • 2018/07/05時点では3.2ベータ版でのみ「Migrate to AndroidX」が使用可能
  • Androidプロジェクトは作成済み

準備

今回使用するプロジェクトはこれ
https://github.com/banbara23/AAC-Sample/tree/coroutine

  • まだAndroidX変換前の状態
  • KotlinでAACアーキテクチャ + Retrofit2 + Croutineを試したプロジェクト

変換→失敗

ではさっそく変換してみる

Android Studioでプロジェクトを開いて、Refactor > Migrate to AndroidX

スクリーンショット 2018-07-05 12.26.49.png

と選択したところ...

何かメッセージがでた

スクリーンショット 2018-07-05 15.11.52.png

どうやら必要条件があるらしく
- compileSdk 28 が必要
- project gradle plugin version 3.2.0 が必要

この条件をクリアするようプロジェクトを修正する必要がある。

修正

compileSdkを 28 へ変更

app/build.gradle
 android {
-    compileSdkVersion 27
+    compileSdkVersion 28

project gradle plugin version を 3.2.0-beta02 に変更

build.grade
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.1.0'
+        classpath 'com.android.tools.build:gradle:3.2.0-beta02'

コミットログ

これで必要条件を満たすことができたはず

変換→成功

再度、Refactor > Migrate to AndroidX

スクリーンショット 2018-07-05 12.26.54.png

migration前の確認ダイアログが出てきた。
チェックONでzip形式でプロジェクトのバックアップも可能らしい。

[Migrate]を押すと、AndroidXに変換する候補の一覧が出てきた

スクリーンショット 2018-07-05 12.29.06.png

ここでAndroidXに変換したい箇所を選択できるらしい。

今回は全選択してして、[Do Refactor]を押した。

スクリーンショット 2018-07-05 12.31.02.png

おお、パッケージがandroidxに変換されてる!

git diffで見てみる

スクリーンショット 2018-07-05 12.32.03.png

build.gradleのライブラリのバージョンまで最新に変換されていた。
(kaptも!)

コミットログを見ると分かりやすいはず
Migrate to AndroidXのコミットログ

ちなみに、SyncもビルドもバッチリOKだった。

結論

Android Studioの機能で一括変換してくれるのはかなり楽

人の手でAndroidXパッケージに変えるよりも速いし、ミスもなさそう

しかし、compileSdk 28 かつ project gradle plugin version 3.2.0 をクリアしているプロジェクトが世の中にどれだけあるんだろうか?

また、このAndroidX変換機能のためにcompileSdkを変更するというのも...

いずれは compileSdkが28以上が当たり前の時代がきた時、この「Migrate to AndroidX」が役に立つ日が来るかもしれない。