1. 生成签名:
E:\ReactLove\rn_hello\rnHello_060>keytool -genkey -v -keystore D:\shudan.keystore -alias shudan-alias -keyalg RSA -keysize 2048 -validity 10000
注意:记住输入的密钥库的口令,后面会用到
E:\ReactLove\rn_hello\rnHello_060>keytool -genkey -v -keystore D:\shudan.keystore -alias shudan-alias -keyalg RSA -keysize 2048 -validity 10000
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: jack
您的组织单位名称是什么?
[Unknown]: jack
您的组织名称是什么?
[Unknown]: jack
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的省/市/自治区名称是什么?
[Unknown]: beijing
该单位的双字母国家/地区代码是什么?
[Unknown]: China
CN=jack, OU=jack, O=jack, L=beijing, ST=beijing, C=China是否正确?
[否]: y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000 天):
CN=jack, OU=jack, O=jack, L=beijing, ST=beijing, C=China
输入 <shudan-alias> 的密钥口令
(如果和密钥库口令相同, 按回车):
[正在存储D:\shudan.keystore]
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore D:\shudan.keystore -destkeystore D:\shudan.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
2. 生成秘钥后,开始在ReactNative项目中的android工程中配置生成的签名信息。 在android目录下的 gradle.properties 文件中添加如下信息:
....
STORE_FILE=./keystore/shudan.keystore
KEY_ALIAS=shudan-alias
STORE_FILE_PASSWORD=123456
KEY_ALIAS_PASSWORD=123456
STORE_FILE: 签名文件存放的目录
KEY_ALIAS: 命令行中-alias 后面的参数也就是别名
STORE_FILE_PASSWORD: 密钥库密码
KEY_ALIAS_PASSWORD: 别名密码
注意:STORE_FILE=./keystore/shudan.keystore 表明将前面生成的shudan.keystore文件存在 android/app目录下的 keystore 目录下。
3. 在 android/app/build.gradle 中配置签名,在android域下添加 signingConfigs配置,并且在 buildTypes 的release 域中配置 signingConfig。需要发布 release 包时就是用 signingConfigs下的release配置的签名信息。
android {
...
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
release {
storeFile file(STORE_FILE)
storePassword STORE_FILE_PASSWORD
keyAlias KEY_ALIAS
keyPassword KEY_ALIAS_PASSWORD
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
// Caution! In production, you need to generate your own keystore file.
// see https://facebook.github.io/react-native/docs/signed-apk-android.
//signingConfig signingConfigs.debug
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
}
4.生成 apk
在 android 目录下,利用 windows 命令行执行如下命令:
注意:在项目中的android 目录下执行,windows 的 cmd 中执行如下命令在开头是没有./ 的,但是在Mac, Linux 的环境下,需要带有 ./,比如 ./gradlew assembleRelease
E:\ReactLove\rn_hello\rnHello_060\android>gradlew assembleRelease
5. 最后在 android\app\build\outputs\apk\release 目录下生成 release 包
E:\ReactLove\rn_hello\rnHello_060\android>gradlew assembleRelease
> Task :app:bundleReleaseJsAndAssets
warning: the transform cache was reset.
Loading dependency graph, done.
info Writing bundle output to:, E:\ReactLove\rn_hello\rnHello_060\android\app\build\generated\assets\react\release\index.android.bundle
info Done writing bundle output
info Copying 11 asset files
info Done copying assets
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 1m 4s
56 actionable tasks: 3 executed, 53 up-to-date
E:\ReactLove\rn_hello\rnHello_060\android>