IT瞄~ react-native 加簽打包釋出app
生成一個簽名金鑰
你可以用keytool
命令生成一個私有金鑰。keytool
命令所在目錄為jdk安裝目錄的bin下
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
這條命令會要求你輸入金鑰庫(keystore)和對應金鑰的密碼,然後設定一些發行相關的資訊。最後它會生成一個叫做my-release-key.keystore
的金鑰庫檔案。
在執行上面這條語句之後,金鑰庫裡應該已經生成了一個單獨的金鑰,有效期為10000天。–alias引數後面的別名是你將來為應用簽名時所需要用到的,所以記得記錄這個別名。
注:請記得妥善地保管好你的金鑰庫檔案,不要上傳到版本庫或者其它的地方。、
設定gradle變數
- 把
my-release-key.keystore
檔案放到你工程中的android/app
資料夾下。 - 編輯
~/.gradle/gradle.properties
,新增如下的程式碼(注意把其中的****
替換為相應密碼)或著編輯 專案/android/gradle.properties
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
上面的這些會作為全域性的gradle變數,我們在後面的步驟中可以用來給應用簽名。
注:一旦你在Play Store釋出了你的應用,如果想修改簽名,就必須用一個不同的包名來重新發布你的應用。所以請務必備份好你的簽名庫和密碼。
添加簽名到應用的gradle配置檔案
編輯你工程目錄下的android/app/build.gradle
,新增如下的內容:
android {
compileSdkVersion 23 //還有下面的buildTools版本 要根據自己的寫
buildToolsVersion '26'
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包
如果你在android/app
下有一個react.gradle
只要在終端下執行以下命令:
$ cd android && ./gradlew assembleRelease
如果你希望改變JavaScript程式碼包或者資原始檔被打包的方式(譬如你想改變這些檔案存放的目錄或者整個工程的檔案結構),你可以讀一下android/app/build.gradle
看看你可以做什麼配置來應用這些修改。
如果你沒有react.gradle
檔案:
你可以升級到最新版本的React Native來獲得這一檔案。或者,你也可以選擇自行在終端裡執行下述命令來打包JavaScript程式碼和資原始檔:
$ mkdir -p android/app/src/main/assets
$ react-native bundle --platform android --dev false --entry-file index.android.js \
--bundle-output android/app/src/main/assets/index.android.bundle \
--assets-dest android/app/src/main/res/
$ cd android && ./gradlew assembleRelease
不論哪種情況,你都應該能在android/app/build/outputs/apk/app-release.apk
中找到生成的APK檔案,並且它已經可以用來被髮布。
測試應用的發行版本
在把發行版本提交到Play Store之前,你應該做一次最終測試。輸入以下命令可以在裝置上安裝發行版本:
$ cd android && ./gradlew installRelease
注意installRelease
命令只能在你完成了上面的簽名配置之後才可以使用。
你可以結束掉任何的packager例項,所有你的程式碼和框架程式碼已經都被打包到了apk資源中。
啟用Proguard程式碼混淆來縮小APK檔案的大小(可選)
Proguard是一個Java位元組碼混淆壓縮工具,它可以移除掉React Native Java(和它的依賴庫中)中沒有被使用到的部分,最終有效的減少APK的大小。
重要:啟用Proguard之後,你必須再次全面地測試你的應用。Proguard有時候需要為你引入的每個原生庫做一些額外的配置。參見app/proguard-rules.pro
檔案。
要啟用Proguard,編輯android/app/build.gradle
檔案:
/**
* 執行Proguard來減小發布版本的Java位元組碼大小
*/
def enableProguardInReleaseBuilds = true