結論
appにあるbuild.gradleで見かけるisMinifyEnabled
はリリース用は必ずtrue
にしよう
// app/build.gradle.kts android { ... buildTypes { getByName("release") { isMinifyEnabled = true // <= これ proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") } getByName("debug") { ...
有効にしないと何がおきるのか?
apkやaabのファイルサイズがメチャクチャ大きくなる!
実際にaabのファイルサイズをみたところ、、、
minifyEnabledが有効 : aabのファイルサイズ
4.7MB
minifyEnabledが無効 : aabのファイルサイズ
13.8MB
3倍以上もサイズが圧縮されることが分かった。
これはデカイ...
なぜ大きくなるのか?
公式ドキュメントによると、、
R8 によるコードの圧縮がデフォルトで有効になります。
コードの圧縮(ツリー シェイキングとも呼ばれています)とは、ランタイムに必要のないコードを R8 が判断して削除するプロセスです。 たとえば、アプリに多数のライブラリ依存関係が含まれていても、その機能のごく一部しか使用されない場合、このプロセスによってアプリのサイズを大幅に縮小できます。
だそうで、コードの圧縮と最適化を自動で行ってくれる。 便利〜