離線包:ReactNative 和你寫的 js文件唠摹、圖片等資源都打包放入 App
使用 react-native bundle --help 來查看打包的具體參數(shù)。下面列舉一些主要參數(shù):
--entry-file <path> RN入口文件的路徑, 絕對(duì)路徑或相對(duì)路徑
--platform [string] ios 或 andorid
--transformer [string] Specify a custom transformer to be used
--dev [boolean] 如果為false, 警告會(huì)不顯示并且打出的包的大小會(huì)變小
--prepack 當(dāng)通過時(shí), 打包輸出將使用Prepack格式化
--bridge-config [string] 使用Prepack的一個(gè)json格式的文件__fbBatchedBridgeConfig 例如: ./bridgeconfig.json
--bundle-output <string> 打包后的文件輸出目錄, 例: /tmp/groups.bundle
--bundle-encoding [string] 打離線包的格式 可參考鏈接https://nodejs.org/api/buffer.html#buffer_buffer.
--sourcemap-output [string] 生成Source Map奉瘤,但0.14之后不再自動(dòng)生成source map,需要手動(dòng)指定這個(gè)參數(shù)煮甥。例: /tmp/groups.map
--assets-dest [string] 打包時(shí)圖片資源的存儲(chǔ)路徑
--verbose 顯示打包過程
--reset-cache 移除緩存文件
--config [string] 命令行的配置文件路徑
1.在 android/app/src/main/ 目錄下創(chuàng)建 assets 目錄
執(zhí)行命令
react-native bundle --entry-file index.js --platform android --dev false --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res/
2.生成簽名密鑰
Android要求所有應(yīng)用都有一個(gè)數(shù)字簽名才會(huì)被允許安裝在用戶手機(jī)上盗温,所以在把應(yīng)用發(fā)布到類似Google Play store這樣的應(yīng)用市場(chǎng)之前,你需要先生成一個(gè)簽名的APK包
用keytool
命令生成一個(gè)私有密鑰:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
1.my-release-key是文件名成肘,my-key-alias是別名
2.如果命令執(zhí)行不成功請(qǐng)嘗試卖局,進(jìn)入到keytool命令存放的目錄再執(zhí)行(在JDK的bin目錄中)
按照提示信息設(shè)置一些發(fā)行相關(guān)的信息,最后將生成my-release-key.keystore
密鑰庫(kù)文件(注意:請(qǐng)記得妥善地保管好你的密鑰庫(kù)文件双霍,不要上傳到版本庫(kù)或者其它的地方)砚偶,密鑰庫(kù)里應(yīng)該已經(jīng)生成了一個(gè)單獨(dú)的密鑰,有效期為10000天洒闸。(--alias參數(shù)后面的別名是你將來為應(yīng)用簽名時(shí)所需要用到的染坯,所以記得記錄這個(gè)別名。)
3.設(shè)置gradle變量
- 把my-release-key.keystore文件放到工程中的android/app文件夾下丘逸。
- 修改android/gradle.properties文件单鹿,添加如下的代碼(注意替換xx為你自己設(shè)置的密鑰和密碼)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=XXX
MYAPP_RELEASE_KEY_PASSWORD=XXX
4.添加簽名到項(xiàng)目的gradle配置文件
編輯android/app/build.gradle
,添加如下的簽名配置:
...
android {
...
defaultConfig { ... }
signingConfigs { //添加這塊代碼
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release //添加這塊代碼
}
}
}
...
5.生成APK包
切換到android目錄下運(yùn)行命令:
gradlew assembleRelease
Gradle的assembleRelease參數(shù)會(huì)把所有用到的JavaScript代碼都打包到一起深纲,然后內(nèi)置到APK包中