react-native 打包 出apk
先上步驟:
一、 生成簽名文件(my-release-key.keystore文件)
Android要求所有應用都有一個數字簽名才會被允許安裝在用戶手機上
1. 在項目目錄下運行如下命令:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
2. 輸入密鑰庫口令:(如圖,在輸入上面的命令後,會有如下的要求)
要求至少6個字符,一定要記住輸入的內容(輸入的時候 終端上是不顯示輸入的內容的)
筆者在第一次打包的時候就是懵逼的,看著空蕩蕩的輸入區域,以為鍵盤壞了,一頓狂按,發現回車還能用,然後在後面需要密鑰的時候就。。。
註意:請記得妥善地保管好你的密鑰庫文件,不要上傳到版本庫或者其它的地方。(React中文網提示)
3. 姓名、地址這些的就可以直接回車跳過了,在最後顯示:“是否正確” 的時候 選擇 是 就可以了
4. 生成簽名文件my-release-key.keystore(會在項目目錄下生成)
二、 將項目目錄下生成的my-release-key.keystore文件,拷到 android/app 目錄下
三、修改android裏面的代碼
1. 在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=******
2. 在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
}
}
splits {
...
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile( "proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release //新增此句
}
}
...
}
註意: 把 def enableProguardInReleaseBuilds = false 改成 true
啟用Proguard代碼混淆來縮小APK文件的大小(保護源代碼,縮小APK包)
Proguard是一個Java字節碼混淆壓縮工具,它可以移除掉React Native Java (和它的依賴庫中)中沒有被使用到的部分,最終有效的減少APK的大小。
(此處解釋來自:windows下react-native android打包筆記)
四、最後,我們就可以執行打包命令了(以後再打包,只需要執行此命令)
gradlew assembleRelease
win10系統的powershell裏面執行後,會報錯誤:
改為如下命令即可
./gradlew assembleRelease
最終,在不報錯的情況下,會在 android\app\build\outputs\apk\release目錄下生成app-release.apk這個最終的打包文件
react-native 打包 出apk