Generating Signed APK
Generating Signed APK
需要本机代码的项目
此页面仅适用于react-native init
使用Create React Native App 制作的或使用此类应用程序弹出的项目。有关弹出的更多信息,请参阅创建React Native App存储库的指南。
Android要求所有应用程序在安装之前都要用证书进行数字签名,因此要通过Google Play商店分发您的Android应用程序,您需要生成已签名的发布APK。Android Developers文档上的签名应用程序页面详细介绍了该主题。本指南简要介绍了该过程,并列出了打包JavaScript包所需的步骤。
生成一个签名密钥
您可以使用生成私人签名密钥keytool
。在Windows上keytool
必须运行C:\Program Files\Java\jdkx.x.x_x\bin
。
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
此命令会提示您输入密钥库和密钥的密码,并为密钥提供专有名称字段。然后它生成一个名为keystore的文件my-release-key.keystore
。
密钥库包含一个密钥,有效期为10000天。别名是您在签名应用程序时稍后使用的名称,因此请记住注意别名。
注意:请记住保持密钥库文件的私密性,不要将其提交给版本控制。
设置gradle变量
- 将
my-release-key.keystore
文件放在android/app
项目文件夹中的目录下。
- 编辑文件
~/.gradle/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变量,我们稍后可以在我们的gradle配置中使用它来签署我们的应用程序。
关于保存密钥库的注意事项:
在Play商店中发布应用程序后,如果您想在任何时候更改签名密钥,则需要使用不同的软件包名称(丢失所有下载和评级)重新发布您的应用程序。所以请备份您的密钥库,不要忘记密码。
关于安全性的注意事项:如果您不想以纯文本存储密码,并且您正在运行OSX,则还可以
将您的凭证存储在Keychain Access应用程序中。然后你可以跳过
__中的最后两行~/.gradle/gradle.properties。
将签名配置添加到您的应用的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 {
...
signingConfig signingConfigs.release
}
}
}
...
生成发布APK
只需在终端中运行以下内容:
$ cd android && ./gradlew assembleRelease
Gradle的assembleRelease
将捆绑运行你的应用程序所需的所有JavaScript到APK中。如果您需要更改捆绑JavaScript和/或可绘制资源的方式(例如,如果更改了默认文件/文件夹名称或项目的一般结构),android/app/build.gradle
请查看如何更新它以反映这些变化。
生成的APK可以在下面找到android/app/build/outputs/apk/app-release.apk
,并且准备好分发。
测试你的应用程序的发布版本
在将发布版本上传到Play商店之前,请确保您彻底进行测试。首先卸载您已经安装的应用程序的任何先前版本。使用以下命令将其安装在设备上
$ react-native run-android --variant=release
请注意,--variant=release
只有在您按上述方式设置了签名后才可用。
您可以杀死任何正在运行的包装程序实例,所有框架和JavaScript代码都捆绑在APK的资产中。
启用Proguard以缩小APK的大小(可选)
Proguard是一个可以稍微减小APK的大小的工具。它通过剥离应用程序未使用的部分React Native Java字节码(及其依赖项)来实现此目的。
重要 __:如果您启用了Proguard,请务必彻底测试您的应用。Proguard通常需要特定于您正在使用的每个本机库的配置。参见
app/proguard-rules.pro__。
要启用Proguard,请编辑android/app/build.gradle
:
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = true