解決!FlutterでAndroidアプリをリリースしようとしたら画面が白紙!?

こんにちは、株式会社Pentagonの山本です。今回、Flutterアプリをリリースしようとしたら、画面が白紙になる不具合に遭遇したため、試行錯誤した内容をまとめておきます。

release環境で実機での動作も問題ありませんでした。なぜか内部テスト時にGoogle Play Storeからアプリをインストールした場合だけ、起動時に白い画面でスタックするという謎現象に遭遇しました。

【こんな人に読んで欲しい】

Androidアプリをリリースしようとしているが、Google Playからインストールすると、起動後画面が白紙になってしまって困っている方。

【この記事を読むメリット】

アプリの起動後に画面が白紙になる問題を解決するヒントが見つかります。

【結論】

原因は特定できなかったのですが、次の対応で解消できました。

  • gradleのバージョンを変更
  • flutter_secure_storageのバージョンを変更
  • アプリのストレージを消してみる
目次

試したこと1|build.gradleのminify等をfalseにしてみる

buildTypes {
        release {
    ....略
            shrinkResources false
            minifyEnabled false
            useProguard false
        }
    }

参考:https://github.com/flutter/flutter/issues/70558#issuecomment-832566022

この方法では解決しませんでした。build.gradleの設定に関してはあまり知見がないのですが、「圧縮、難読化、最適化」をしない設定にしているようです。なんとなくuseProguardとかfalseにしたくないですね。

試したこと2|gradleバージョンを変更

I thing your problem is your gradle version. a was same problem and I solved it with change gradle version to 3.5.4.

dependencies {
        classpath "com.android.tools.build:gradle:3.5.4"
     ...

    }

参考:https://stackoverflow.com/questions/60936332/flutter-release-apk-doesnt-work-just-white-screen

これで一度はアプリが白紙になる問題が直ったのですが、後ほど再発します。

試したこと3|Exceptionが発生していないか確認

fvm flutter run --release -t lib/main-prod.dart --flavor prod --verbose

このコマンドでExceptionが発生していないか確認したところ、次のようなExceptionが発生していました。

Unhandled Exception: PlatformException(Exception encountered, read, javax.crypto.BadPaddingException: error:1e000065:Cipher functions:OPENSSL_internal:BAD_DECRYPT

参考:https://github.com/mogol/flutter_secure_storage/issues/161

flutter_secure_storageが原因だった

flutter_secure_storageのバージョンを3.3.3から3.3.2にダウン

flutter_secure_storage: 3.3.2

main/AndroidManifest.xml にbackupタグを追加

<application
       ...
        android:allowBackup="false"
        android:fullBackupContent="false">

これでExceptionはとりあえず解消しました。

試したこと4|アプリのストレージを一旦消してみる

アプリのストレージを一旦消したら直りました。

参考:https://github.com/mogol/flutter_secure_storage/issues/53#issuecomment-506715829

まとめ

最新のFlutterバージョンに上げることで、最新のライブラリを使えるようになり、こういった不具合に遭遇することもなくなると思います。タイミングをみてFlutterバージョンを上げたいですね。

採用情報はこちら
目次