谷歌商店上架打包签名设置

582 阅读3分钟

google 要求所有应用都必须先使用证书进行数字签名,然后才能安装.

使用Keytool生成上传秘钥

Window

在Windows上,keytool必须从运行C:\Program Files\Java\jdkx.x.x_x\bin。

$ keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

此命令提示您输入密钥库和密钥的密码以及密钥的专有名称字段。然后,它将密钥库生成为名为的文件my-upload-key.keystore。

密钥库包含单个密钥,有效期为10000天。别名是您稍后在对应用程序进行签名时将使用的名称,因此请记住该别名。

20231006

Mac

如果不确定JDK bin文件夹在哪里,请执行以下命令找到它:

$ /usr/libexec/java_home

它将输出JDK的目录,如下所示:

/Library/Java/JavaVirtualMachines/jdkX.X.X_XXX.jdk/Contents/Home

使用命令导航到该目录,$ cd /your/jdk/path并使用具有sudo权限的keytool命令,如下所示。

$ sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

ps:存储命令的时候报错,记得要加sudo

设置Gradle变量(有的版本不需要)

1.将my-upload-key.keystore文件放在android/app项目文件夹中的目录下。

2.编辑文件~/.gradle/gradle.properties或android/gradle.properties,然后添加以下内容(替换*****为正确的密钥库密码,别名和密钥密码)

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore

MYAPP_UPLOAD_KEY_ALIAS=my-key-alias

MYAPP_UPLOAD_STORE_PASSWORD=*****

MYAPP_UPLOAD_KEY_PASSWORD=*****

这些将是全局Gradle变量,稍后我们可以在Gradle配置中使用它们来对我们的应用进行签名。

关于安全性的注意事项:如果您不希望以明文形式存储密码,并且您正在运行OSX,则还可以将凭据存储在“钥匙串访问”应用程序中。然后,您可以跳过中的最后两行~/.gradle/gradle.properties。

查看keystory别名

需要填写keyAlias别名的时候,如何查看

在终端里,进入keystory放置的文件夹

输入命令

keytool -list -v -keystore my-release-key.keystore -storepass

keytool -list -v -keystore /Users/mac/Documents/wrokspace/pokaplus/android/app/release.keystore

秘钥口令密码: 20211230

7b95649d0538b5e0d49f9045c59447bb.png

将签名配置添加到您应用的Gradle配置

最后要做的配置步骤是设置要使用上载密钥签名的发行版本。编辑android/app/build.gradle项目文件夹中的文件,并添加签名配置,


...

android {

...

defaultConfig { ... }

signingConfigs {

release {

if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {

storeFile file(MYAPP_UPLOAD_STORE_FILE)

storePassword MYAPP_UPLOAD_STORE_PASSWORD

keyAlias MYAPP_UPLOAD_KEY_ALIAS

keyPassword MYAPP_UPLOAD_KEY_PASSWORD

}

}

}

buildTypes {

release {

...

signingConfig signingConfigs.release

}

}

}

...

生成发布APK

在终端中运行以下命令:


$ cd android

./gradlew clean

react-native bundle --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --platform android --assets-dest android/app/src/main/res/ --dev false

$ ./gradlew bundleRelease

Gradle bundleRelease会将运行您的应用程序所需的所有JavaScript捆绑到AAB中(Android应用程序捆绑包)。如果您需要更改JavaScript捆绑包和/或可绘制资源的捆绑方式(例如,如果您更改了默认文件/文件夹名称或项目的常规结构),android/app/build.gradle请查看如何更新它以反映这些变化。

注意:确保gradle.properties不包含org.gradle.configureondemand = true,因为这会使发行版本跳过将JS和资产捆绑到应用程序二进制文件中的过程。

生成的AAB可以在下找到android/app/build/outputs/bundle/release/app.aab,并且可以将其上传到Google Play。

注意:为了让Google Play接受AAB格式,需要在Google Play控制台上为您的应用配置Google Play应用签名。如果您要更新不使用Google Play应用签名的现有应用,请查看我们的迁移部分,以了解如何执行该配置更改。

测试应用的发布版本

在将发行版本上传到Play商店之前,请确保您已对其进行了彻底的测试。首先卸载您已经安装的应用程序的任何先前版本。使用以下命令将其安装在设备上:

$ npx react-native run-android --variant=release

请注意,--variant=release只有在如上所述设置签名后,此选项才可用。

您可以终止任何正在运行的捆绑程序实例,因为所有框架和JavaScript代码都捆绑在APK的资源中。