React Native アプリの開発時は、起動するたびに Metro Bundler から bundle ファイルをロードしますが、デバッグ版でもリリース版と同様に、bundle ファイルを apk に組み込んだ状態でビルドする方法です。ちょっと古めですが、以下は React Native 0.53.3 で試した情報です。
方法
eject 済みであることが前提になります。
build.gradle の修正
- プロジェクトの ./android/app/build.gradle の
project.ext.react
にbundleInDebug: true
を追加します。 - さらに開発モードも無効化(
__dev__ = false
にする1)なら、devDisabledInDebug: true
を追加します。
project.ext.react = [
entryFile: "index.js",
bundleInDebug: true,
devDisabledInDebug: true,
]
apply from: "../../node_modules/react-native/react.gradle"
buildIn〜
や devDisabledIn〜
の 〜
部は、実際はフレーバー名とビルドタイプを指定するものです。詳しくはbuild.gradle のコメント欄参照。
gradle.properties の修正
Configure On Demand が有効だと、バンドルファイルが埋め込まれないことがあるようです。
ので、gradle.properties で明示的に設定をオフにします。
org.gradle.configureondemand=false
ビルド
bundleInDebug の true / false を切り替えたときは、クリーンビルドしないと反映されないことがありました。以下は gradle デーモンも停止し、ビルド結果もすべて削除してからクリーンビルドしています。
$ ./gradlew --stop
$ rm -rf ./app/build
$ ./gradlew clean & ./gradlew assembleDebug
-
端末を振ると出てくる開発者メニューの無効化にはなりません。開発者メニューも無効にする場合は、build.gradle の buildTypes の debug バリアントで
debuggable
をfalse
にします。 ↩