1. 程式人生 > >react native 打包APK

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 指定金鑰的長度,
    keysize與keyalg預設對應關係: 
           2048 (when using -genkeypair and -keyalg is “RSA”) 
           1024 (when using -genkeypair and -keyalg is “DSA”) 
           256 (when using -genkeypair and -keyalg is “EC”)

  • -validity 10000 證書有效期天數。
命令執行後會要求輸入密碼和發行相關的一些設定資訊,按照提示進行設定即可,完成後會生成一個my-release-key.keystore檔案

設定gradle變數

  1. my-release-key.keystore檔案放到你工程中的android/app資料夾下。
  2. 編輯~/.gradle/gradle.properties(沒有這個檔案你就建立一個),新增如下的程式碼(注意把其中的****替換為相應密碼)

注意:~表示使用者目錄,比如windows上可能是C:\Users\使用者名稱

,而mac上可能是/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版本間來回切換安裝時可能會報錯簽名不匹配,此時需要先解除安裝前一個版本再嘗試安裝。

轉自: 點選開啟連結