打包共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
再次重新打包即可