react native 打包APK
Android:
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
- -genkey 用於生成公 / 私金鑰對
- -keystore my-release-key.keystore 將要生成的金鑰庫的名稱
- -alias my-key-alias 證書別名,可以是任意字元
- -keyalg RSA 此處”RSA“為金鑰的演算法。可以選擇的金鑰演算法有:RSA、DSA、EC。
- –keysize 4096 指定金鑰的長度,
1024 (when using -genkeypair and -keyalg is “DSA”)
256 (when using -genkeypair and -keyalg is “EC”)
- -validity 10000 證書有效期天數。
設定gradle變數
- 把
my-release-key.keystore
檔案放到你工程中的android/app
資料夾下。 - 編輯
~/.gradle/gradle.properties
(沒有這個檔案你就建立一個),新增如下的程式碼(注意把其中的****
替換為相應密碼)
注意:~表示使用者目錄,比如windows上可能是C:\Users\使用者名稱
/Users/使用者名稱
。
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釋出了你的應用,如果想修改簽名,就必須用一個不同的包名來重新發布你的應用(這樣也會丟失所有的下載數和評分)。所以請務必備份好你的金鑰庫和密碼。
提示:如果你不想以明文方式儲存密碼,同時你使用的是macOS系統,那麼你也可以把密碼儲存到鑰匙串(Keychain)中。這樣一來你就可以省略掉上面配置中的後兩行(即MYAPP_RELEASE_STORE_PASSWORD和MYAPP_RELEASE_KEY_PASSWORD)。
添加簽名到專案的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包
只需在終端中執行以下命令:
$ cd android && ./gradlew assembleRelease
譯註:cd android表示進入android目錄(如果你已經在android目錄中了那就不用輸入了)。./gradlew assembleRelease
在macOS、Linux或是windows的PowerShell環境中表示執行當前目錄下的名為gradlew的指令碼檔案,且其執行引數為assembleRelease,注意這個./
不可省略;而在windows的傳統CMD命令列下則需要去掉./
。
Gradle的assembleRelease
引數會把所有用到的JavaScript程式碼都打包到一起,然後內建到APK包中。如果你想調整下這個行為(比如js程式碼以及靜態資源打包的預設檔名或是目錄結構等),可以看看android/app/build.gradle
檔案,然後琢磨下應該怎麼修改以滿足你的需求。
生成的APK檔案位於android/app/build/outputs/apk/app-release.apk
,它已經可以用來發布了。
測試應用的發行版本
在把發行版本提交到Play Store之前,你應該做一次最終測試。輸入以下命令可以在裝置上安裝發行版本:
$ cd android && ./gradlew installRelease
注意installRelease
引數只能在你完成了上面的簽名配置之後才可以使用。 你現在可以關掉執行中的packager了,因為你所有的程式碼和框架依賴已經都被打包到apk包中,可以離線運行了。
轉自: 點選開啟連結在debug和release版本間來回切換安裝時可能會報錯簽名不匹配,此時需要先解除安裝前一個版本再嘗試安裝。