(Android)react-native的簽名打包

本人剛剛接觸RN,將自己遇到的問題做個分享,僅供參考!

1、生成一個簽名密鑰

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize2048-validity10000

my-release-key.keystore:文件名

my-key-alias:別名

這兩塊可以修改為自己的名字。

2、在項目根目錄下找到路徑/android/app/src/main,并在該目錄下新建assets文件夾

3.在工程目錄下將index.android.bundle下載并保存到assets資源文件夾中

方法:curl -k "http://localhost:8081/index.android.bundle" > android/app/src/main/assets/index.android.bundle

curl可以百度下載,將curl.exe文件復制在項目的根目錄下即可。

提示1: gradle的版本要和項目的版本一樣

gradle版本查看:gradle -v

項目的gradle版本查看,是打開\android\gradle\wrapper\gradle-wrapper.properties

例如:distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip則版本就是2.14.1

4.添加gradle的android keystore配置

在項目根目錄\android\app\build.gradle文件中添加如下:

//簽名

signingConfigs{

release?{

storeFile?file("/my-release-key.keystore")

storePassword?"密碼"

keyAlias?"keyAlias的名字"

keyPassword?"密碼"

}

}

buildTypes?{

release?{

minifyEnabled?false

proguardFiles?getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'

signingConfig?signingConfigs.release?//添加這句話引用簽名配置

}

}

5.啟用Proguard代碼混淆來縮小APK文件的大小

Proguard是一個Java字節碼混淆壓縮工具,它可以移除掉React Native Java(和它的依賴庫中)中沒有被使用到的部分,最終有效的減少APK的大小。

重要:啟用Proguard之后,你必須再次全面地測試你的應用。Proguard有時候需要為你引入的每個原生庫做一些額外的配置。參見app/proguard-rules.pro文件。

def enableProguardInReleaseBuilds = true

6.在/android/目錄中執行gradle assembleRelease命令,打包后的文件在 android/app/build/outputs/apk目錄中,例如app-release.apk。如果打包碰到問題可以先執行 gradle clean 清理一下。

安裝gradle工具(版本與android\gradle\wrapper下的一致),并配置環境變量,配置GRADLE_HOME到你的gradle根目錄當中,然后把%GRADLE_HOME%/bin(linux或mac的是$GRADLE_HOME/bin)加到PATH的環境變量。

配置完成之后,運行gradle -v,檢查一下是否安裝無誤

7.將apk發布到各大應用市場(BUILD SUCCESSFUL)


下面說一下我遇到的問題:

由于項目中引入了百度地圖,實時導航...等,當執行第5步代碼混淆的時候會導致app運行錯誤。

解決方案:

def enableProguardInReleaseBuilds =?false

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容