概要
デバッグビルドflutter build apk --debug
で生成した.apkは正常に動作するのに、リリースビルドflutter build apk --release
で生成した.apkは起動直後にクラッシュしてしまう現象にしばらくの間悩まされていました。
一つ解決策を見つけたので、備忘と共有のために記します。
解決策
android/app/build.gradle
に以下の設定を追加することで解消できました。
build.gradle
buildTypes {
release {
// ...
shrinkResources false // 追加
minifyEnabled false // 追加
}
}
shrinkResources
はリソースの圧縮で、minifyEnabled
はR8によるコードの圧縮(実行の際に不要と判断したコードを削除するプロセス)のことです。それぞれを無効にすることで解決しました。
原因(と思われるもの)
R8によるコードの圧縮の際に本来は必要なコードまで削除されてしまい、起動直後にアプリが停止してしまっていたのではないかと推察しています。
副作用
コードやリソースが圧縮されなくなってしまうため、注意が必要です。