【React Native】Androidのリリースビルドが起動直後にクラッシュする

Google Play でリリースしている React Native の Android アプリのみ、起動直後にクラッシュするという不具合が発生したのでその対処法についてです。

振り返ってみると、React Native の Android アプリでだけ、API との通信に失敗したり、Mapbox の地図が表示されなかったりしますね…。
iOS は割とすんなり動くのに、何故 Android だけがこんなに問題児なのか…。

参考にさせていただいた記事はこちらから。

ReactNativeでAndroidのリリースビルドだけが落ちる – Qiita
https://qiita.com/IzumiSy/items/b72243115751d47c5862

2018年の記事ですが、問題ありませんでした。

 

発生していたエラーは下記のとおりです。

java.lang.RuntimeException: 
  at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets (Native Method)
  at com.facebook.react.bridge.CatalystInstanceImpl.loadScriptFromAssets (CatalystInstanceImpl.java:232)
  at com.facebook.react.bridge.JSBundleLoader$1.loadScript (JSBundleLoader.java:29)
  at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle (CatalystInstanceImpl.java:261)
  at com.facebook.react.ReactInstanceManager.createReactContext (ReactInstanceManager.java:1350)
  at com.facebook.react.ReactInstanceManager.access$1100 (ReactInstanceManager.java:135)
  at com.facebook.react.ReactInstanceManager$5.run (ReactInstanceManager.java:1053)
  at java.lang.Thread.run (Thread.java:923)

Google Play に送られてきていたクラッシュレポートです。
上記の記事によると「React Native の Android リリースビルドの際に JavaScript 側のバンドルが走らず、ランタイムに読み込み対象のバンドルアセットが見つからないためアプリがクラッシュする」とのことでした。
…よく分からん!
とにかく、リリース用ビルドが失敗しているということでしょうか…?

で、対処方法としては、/android/app/build.gradle に下記の 2行を追加すればいいとのことでした。

project.ext.react = [
    bundleInDebug: false,  // この行を追加
    bundleInRelease: true,  // この行を追加
    ......
]

上記を追加後、下記コマンドを実行してリリース用 APK ファイルを作成します。

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

cd android
gradlew --stop
gradlew clean
 
gradlew assembleRelease -x bundleReleaseJsAndAssets

作成した APK ファイルを Android 端末に転送し、そのファイルからアプリをインストールして実行したところ、今度はクラッシュすることなく起動しました!

 

以上、React Native の Android のリリースビルドのみ起動直後にクラッシュする不具合を修正する方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG