Pocket

ReactNativeでinitしただけのアプリのandroid releaseが動かないときの対処方法です。react: 16.8.3, react-native: 0.59.8 です。

1. ターミナルで、Task 'installRelease' not found in project が表示された場合

release apkができているか確認してください。本来は、app-release.apk があるはずです。

release apkがない場合は、android/app/build.gradle に署名キーの設定が不足しています。とりあえず、debug用の設定を記述しましょう。

2. エミュレータ画面で「問題が発生したため、(アプリ名)を終了しました」と表示された場合

ターミナルの表示では、BUILD SUCCESSFULと表示されました。

しかし、エミュレータ画面(または実機の画面)は白くなった直後、アラートボックスで「問題が発生したため(アプリ名)を終了しました」と表示されて、終了してしまいました。

念のため、release apkができていることを確認しておきましょう。

android/build.gradleを見てください。gradleプラグインバージョンは、3.3.1でしょうか?3.4.1でしょうか?

react-native init直後は、3.3.1です。android stuidoで開いたとき、gradleをupdateしますかと聞かれて、Updateしたので、3.4.1になっていました。

そんなことは忘れていて、動くプロジェクトと、動かないプロジェクトをdiffして、ようやく判明しました。

対応方法1:3.3.1に戻す

3.4.1 の部分を 3.3.1 に編集してください。次にターミナルで、中間ファイルを削除してから、releaseビルドしてください。

対応方法2:3.4.1のまま、手動でbundleする

次の記事によると、原因は、jsがbundleされないため。自力でbundleするとよい、とのことです。

findしてみると、index.android.bundleがありませんでした。

次のような、releaseビルド用のシェルスクリプト run-android-release.shを作ってください。実行すると、releasaeビルドが動きました。

※ application_idをcom.xxxxからclick.xxxxに編集したので、これも疑いましたが、これは原因ではありませんした。