一、生成签名密钥
进入Android/app目录,执行以下命令
keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
这条命令会要求你输入
| 密钥口令 | 这里可以随便输,比如:123456 |
|---|---|
| 名字与姓氏 | 可空|随便填 |
| 单位名称 | 可空|随便填 |
| 组织 | 可空|随便填 |
| 城市 | 可空|随便填 |
| 省市区 | 可空|随便填 |
| 是否正确 | Y |
此时app目录会多出一个 my-release-key.keystore 文件
二、设置 gradle 变量
进入gradle.properties文件,将一下代码添加到末尾
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=123456 // 之前输入的密钥口令 123456
MYAPP_RELEASE_KEY_PASSWORD=123456 // 之前输入的密钥口令 123456
三、把签名配置加入到项目的 gradle 配置中
编辑你项目目录下的android/app/build.gradle,添加如下的签名配置:
...
android {
...
defaultConfig { ... }
signingConfigs {
// 添加下面代码
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 {
...
// 修改这行后面debug为release
// signingConfig signingConfigs.debug
signingConfig signingConfigs.release
}
}
}
...
四、针对不同的 CPU 架构生成 APK 以减小 APK 文件的大小
默认情况下,生成的 APK 会同时包含针对于多种 CPU 架构的原生代码。这样可以让我们更方便的向其他人分享这个 APK,因为它几乎可以运行在所有的 Android 设备上。但是,这会导致所有设备上都有一些根本不会运行的代码,白白占据了空间。目前安卓设备绝大多数是 ARM 架构,因此对于大部分应用来说可以考虑去掉 x86 架构的支持(但是请注意模拟器大部分是 x86 架构,因此去掉 x86 架构后将无法在模拟器上运行)。
// 这步可不做
// def enableSeparateBuildPerCPUArchitecture = false
def enableSeparateBuildPerCPUArchitecture = true
五、生成发行 APK 包
1、React Native默认打包
cd android
// windows 可能需要去掉 ./
./gradlew assembleRelease
build 打包后生成apk目录:
~/android/app/build/outputs/release/app-release.apk
~表示项目路径
2、使用其他工具打包
// 在项目根目录执行
yarn add react-native-upload -D
未完待续