打包共5個步驟
1.在終端裏面,cd 到項目的根目錄後.執行下面這行命令:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
2.執行第一步會在根目錄下會生成一個XXXXXX.keystore的文件,直接拿到android/app下.
3.在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=******
4.在android/app/build.gradle添加下面<<<<< 中的內容 >>>>>
def enableProguardInReleaseBuilds = true // 改爲true
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 {
<<<<< signingConfig signingConfigs.release >>>>>
...
}
}
}
5.終端cd 到android目錄下.執行命令
./gradlew assembleRelease
但是出現了一個問題,> Cannot add task 'wrapper' as a task with that name already exists. 說是在android/build.gradle 文件36行報錯
最終發現原因是gradle版本問題
// 舊版本是:
task wrapper(type:Wrapper) {
//configuration
}
// 新版本是:
wrapper {
//configuration
}
改完之後,再次執行./gradlew assembleRelease
成功了。
但是發現手機安裝完成之後打不開,閃退!
在項目根目錄下執行
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
執行成功之後會在/android/app/src/main/assets下面生成一個Bundle文件
完事之後再次到android目錄下執行 ./gradlew assembleRelease
如果還是不行
找到android/app/src/main/java 刪除 drawable
再次重新打包即可