先日リリースした「通知くん」 のAndroid版を開発しています。
そこで原因不明の問題が発生、なんとか解決出来たのでその方法など書いておきたいと思います。
あまり同じ症状の方も見なかったのでちゃんとドキュメントを読んでセットアップすれば発生しない問題なのかもしれません。
症状
buildTypesに「staging」を追加している状態で./gradlew assembleStaging
を実行して出来たステージング用のapkをインストールして確認しようとすると
最初のスプラッシュ画面が表示されたあと、うんともすんとも言わず止まってしまう。1
buildTypesの設定
以下のような設定をしています。
filename=android/app/build.gradle
buildTypes { debug { applicationIdSuffix '.debug' signingConfig signingConfigs.debug } staging { initWith release matchingFallbacks = ['release'] applicationIdSuffix '.staging' signingConfig signingConfigs.release } release { signingConfig signingConfigs.release minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" }}
原因の調査
デバッグモードを有効にしてビルドすると、以下のメッセージが表示された。2
Unable to load script. Make sure you're either running a Metro server (run 'react-native start') or that your bundle 'index.android.bundle' is packaged correctly for release.
Metro serverは開発時にしか使わないので関係ない。ってことで怪しいのは「that your bundle 'index.android.bundle' is packaged correctly for release」の方。
どうやらreact-native bundle
が動いてなさそう。
解決方法
android/app/build.gradle
のproject.ext.react
にbundle関係の設定を追加する。
filename=android/app/build.gradle
project.ext.react = [ enableHermes: false, // 以下追加 bundleInDebug: false, bundleInRelease: true, bundleInStaging: true, devDisabledInStaging: true,]
これで無事解決!