概要
デバッグビルド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によるコードの圧縮の際に本来は必要なコードまで削除されてしまい、起動直後にアプリが停止してしまっていたのではないかと推察しています。
副作用
コードやリソースが圧縮されなくなってしまうため、注意が必要です。