一 生成秘钥
进入到jdk安装目录的bin目录下, 执行以下命令
keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
-keystore: 指生成的秘钥文件名称
-alias: 这个之后要用, 需要记一下
注:
- win环境下, 如果jdk安装在c盘, 可能会因为没有读写权限导致生成秘钥文件失败, 需在管理员模式的cmd中执行该命令
- 该过程中需要输入一些公司简称, 密码之类的内容, 这个密码可能会在app上架应用市场或者申请证书时用到,需要记一下
二 设置 gradle 变量
将生成的秘钥文件复制到 android/app
.
在 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 配置中
没啥需要改的, 直接复制进去就行
...
android {
...
defaultConfig { ... }
signingConfigs { // this
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
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 // this
}
}
}
...
在使用一些三方服务时,可能因为开发时和打包后的签名文件不同的原因导致服务无生效之类的问题,此处可以考虑将开发时使用的签名文件也换成release的签名文件(不知道这么做会不会涉及安全问题)
四 执行打包命令
进入 android 目录下, 执行该命令.
./gradlew assembleRelease
生成的 APK 文件位于android/app/build/outputs/apk/release/app-release.apk
注:
- 此处的
./
,在有些命令行工具中会报错,例如cmd。可以尝试将./
去掉重新执行命令. - 我们将rn的版本从0.67升级到0.72之后出现了一些三方依赖在打包时报错的情况, 我们将命令更换成了
./gradlew app:assembleRelease
之后解决了这一问题Task :react-native-xxxxx:verifyReleaseResources FAILED
五 在设备上运行该发行版本
npx react-native run-android --variant=release