1. 程式人生 > >IT瞄~ react-native 加簽打包釋出app

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變數

  1. my-release-key.keystore檔案放到你工程中的android/app資料夾下。
  2. 編輯~/.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