AS3.2 で Built-in Shrinker が使えない問題
今日1日検証した内容のメモ。
いわゆる 64K メソッド問題を multi-dex 以外で解決する方法として Built-in Shrinker を愛用しているんですが、Android Studio 3.1 以降にするとどうにも Run や InstantRun ができない問題が発生していました。
Built-in Shrinker はこんなやつ
android {
...
buildTypes {
...
debug {
// Built-in Shrinker
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
4月頃試したけど
Android Studio 3.1.1 にアップデートして InstantRun 有効にして起動したらこれ pic.twitter.com/1tmhcsEAf7
— 竹内裕昭 (@takke) April 10, 2018
Android Studio 3.2 Canary 10 でも InstantRun で実行できないので Android Studio 3.0 に戻してみる
— 竹内裕昭 (@takke) April 10, 2018
AS 3.2 Beta5 が出たのでそろそろ修正されているかと思ってやってみましたが
Android Studio 3.2 Beta5 が出てたのでこれで Build -> Run できるところまでプロジェクト側をごにょごにょする
— 竹内裕昭 (@takke) July 31, 2018
AS3.2 Beta5 + AGP 3.2.0-beta05 で試したけどやっぱりダメだった。検証作業始めるか。 pic.twitter.com/4cPCW2K1qj
— 竹内裕昭 (@takke) July 31, 2018
という感じでダメだったので最小プロジェクト構成で試してみました。
最小プロジェクト構成で試す
Android Studio 3.2 Beta5 で EmptyActivity のプロジェクトを作り、Built-in Shrinker を有効にしたところ、いきなり Run できなくなりました。
AS32で新しくEmptyActivityのプロジェクト作って Built-in Shrinker だけ有効にしても Run に失敗した。どうなってるんだろう。
— 竹内裕昭 (@takke) July 31, 2018
AGP 3.3 alpha03 なら動く
Android Studio 3.2 Beta5
+ Android Gradle Plugin 3.3.0-alpha03
+ Gradle 4.9 rc1
という構成だと Run および InstantRun できました。
但し Java 1.8 対応の方式が変わっているので gradle.properties
に android.enableR8.desugaring=false
の記述が必要。
https://t.co/J64GpqcSOAに android.enableR8.desugaring=false を書いて experimental だから unsupported だぞ、と warning されるけどともかく AS3.2+AGP 3.3.0-alpha03+Gradle 4.9rc1 で Run/InstantRun できるようになった。APK作れるだろうか。
— 竹内裕昭 (@takke) July 31, 2018
APK 作って普通に実機に入れても動いたので experimental が気になるとはいえ一応解決かもしれない。
APKで無事起動した。できれば3.2betaが良かったけども仕方ない。
— 竹内裕昭 (@takke) July 31, 2018
(2018/8/3追記) AGP 3.3 alpha04 でも動いた
Android Studio 3.3 Canary 4
が出たので Android Gradle Plugin 3.3.0-alpha04
+ Gradle 4.9
(4.9 rc1
からアップデート) に差し替えましたが無事 Run および InstantRun できました。
AGP 3.3.0-alpha04 にしたら "Minimum supported Gradle version is 4.9. Current version is 4.9-rc-1." と言われたので恐る恐るアップデートする
— 竹内裕昭 (@takke) August 3, 2018
AGP 3.3.0-alpha03+Gradle 4.9rc1 のときは警告がモジュール数分並んでたんだけど AGP 3.3.0-alpha04+Gradle 4.9 にすると1つにまとめられた。GJだけど早くこの警告なくなって欲しいなー pic.twitter.com/VY85GvQQWb
— 竹内裕昭 (@takke) August 3, 2018