React-Native 專案打包(iOS/Android)
1. Android 打包
第一步:生成Android簽名證書
簽名APK需要一個證書用於為APP簽名,生成簽名證書可以Android Studio以視覺化的方式生成,也可以使用終端採用命令列的方式生成。
第二步:設定gradle變數
1.將你的簽名證書copy到 android/app目錄下。
2.編輯~/.gradle/gradle. properties或../android/gradle.properties(一個是全域性gradle.properties,一個是專案中的gradle.properties,大家可以根據需要進行修改) ,加入如下程式碼:
MYAPP_RELEASE_STORE_FILE=your keystore filename
MYAPP_RELEASE_KEY_ALIAS=your keystore alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
提示:用正確的證書密碼、alias以及key密碼替換掉 *。
第三步:在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
}
}
}
...
第四步:簽名打包APK
terminal進入專案下的android目錄,執行如下程式碼:./gradlew assembleRelease
簽名打包成功後你會在 “android/app/build/outputs/apk/”目錄下看到簽名成功後的app-release.apk檔案。
提示:如果你需要對apk進行混淆打包 編輯android/app/build.gradle:。
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = true
2.iOS打包
第一步:rn專案的ios工程資料夾建立bundle資料夾,然後生成jsbundle
進入rn專案的ios工程資料夾,找到和rn專案同名的檔案件,開啟AppDelegate.m檔案,將這一行註釋掉(為了方便真機和模擬器間的切換,儘量註釋):
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
新加一行:
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"index.ios" withExtension:@"jsbundle"];
如果需要切換回模擬器除錯,只需要將新加這行註釋掉,並恢復原始碼即可。
新加這行程式碼意思就是告訴native rn程式碼的入口,我們會在下一步生成這個jsbundle。
第二步:開啟終端,進入你的rn工程,在根目錄下執行bundle命令
react-native bundle --entry-file ./index.ios.js --bundle-output ./ios/bundle/index.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
引數說明:
- -entry-file 指定入口檔案 因為要打包ios平臺,所以指定為rn專案的index.ios.js作為入口
- –bundle-output 指定輸出的jsbundle檔案路徑和檔名 指定到rn專案的ios工程資料夾下,記得一定要先建立bundle資料夾,不然終端會報資料夾找不到的錯誤
- –platform 指定平臺型別
- –assets-dest 指定資原始檔夾路徑 assets資料夾的路徑,包含圖片、node模組等資源
- –dev 是否為開發模式 如果設定為false,不會產生警告,並且bundle會被壓縮
還有其他命令,比如:transformer、prepack、bundle-encoding等,可以到官網檢視具體介紹。
完成後bundle生成完成後,終端會有類似提示:
第三步:用xcode Open another project開啟rn專案的ios工程資料夾
配置網路訪問白名單:
開啟info.plist
設定應用圖示和啟動圖:
iOS應用中沒有圖示,打包會報錯。
然後,就可以進行打包,流程和原生iOS打包流程一樣,(首先的配置證書)
iOS打包流程可以參照部落格中的打包上線流程:傳送門
注:Ad Hoc 和 App Store 打包過程基本一樣,區別在於生成證書時需選擇相對應的證書。
。