如何启用 Google Play 应用签名

How to enable Google Play App Signing

我想很多开发者都在尝试了解更多关于 Google I/O 2017 年推出的新 Google Play 应用签名功能。

存储密钥库以在内部签署应用程序的能力 Google Play 可以让您省去安全存储密钥库的工作,并且可以帮助系统根据硬件和 OS 特征.

您可以在此处的官方文档中阅读有关此主题的更多信息:https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing

通过以下回答,我将更好地解释您上传原始密钥库所需遵循的步骤以及如何创建新的上传密钥库,从现在开始您需要使用它来签署您的 APK。

在继续之前观看这个 Android 开发者视频以了解您的 App Signing 注册选择的影响: https://youtu.be/odv_1fxt9BI

本指南面向已在 Play 商店中拥有应用程序的开发人员。如果您是从一个新应用开始,这个过程会容易得多,您可以遵循 here

中“新应用”段落的指导方针

99% 的开发人员已经具备的先决条件 :

  1. Android工作室

  2. JDK 8 并且在安装后您需要在您的用户 space 中设置一个环境变量以简化终端命令。在 Windows x64 中,您需要将此:C:\Program Files\Java\{JDK_VERSION}\bin 添加到 Path 环境变量。 (如果您不知道如何操作,可以阅读我的 指南)。

步骤 0:打开 Google Play 开发者控制台,然后转到 发布管理 -> 应用签名

接受应用签名服务条款。

第 1 步:点击与下图相同的按钮下载 PEPK 工具

步骤 2:打开终端并输入:

java -jar PATH_TO_PEPK --keystore=PATH_TO_KEYSTORE --alias=ALIAS_YOU_USE_TO_SIGN_APK --output=PATH_TO_OUTPUT_FILE --encryptionkey=GOOGLE_ENCRYPTION_KEY

图例:

  • PATH_TO_PEPK = 您在 步骤 1 中下载的 pepk.jar 的路径可能类似于 C:\Users\YourName\Downloads\pepk.jar Windows 用户。
  • PATH_TO_KEYSTORE = 用于签署发布 APK 的密钥库路径。可以是 *.keystore 或 *.jks 类型的文件或没有扩展名。像 C:\Android\mykeystoreC:\Android\mykeystore.keystore 等等...
  • ALIAS_YOU_USE_TO_SIGN_APK = 用于签署发行版 APK 的别名。
  • PATH_TO_OUTPUT_FILE = 扩展名为 .pem 的输出文件的路径,类似于 C:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY = 此加密密钥应始终相同。您可以在 App Signing 页面中找到它,复制并粘贴它。应该是这种形式:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

示例:

java -jar "C:\Users\YourName\Downloads\pepk.jar" --keystore="C:\Android\mykeystore" --alias=myalias --output="C:\Android\private_key.pem" --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

按回车键,您需要按顺序提供:

  1. 密钥库密码
  2. 别名密码

如果一切顺利,您现在将在 PATH_TO_OUTPUT_FILE 文件夹中有一个名为 private_key.pem.

的文件

第 3 步:点击与下图相同的按钮上传 private_key.pem 文件

步骤 4:使用 Android Studio 创建一个新的密钥库文件。

YOU WILL NEED THIS KEYSTORE IN THE FUTURE TO SIGN THE NEXT RELEASES OF YOUR APP, DON'T FORGET THE PASSWORDS

打开您的 Android 个项目(随机选择一个)。前往 Build -> Generate Signed APK 然后按 Create new.

现在您应该填写必填字段。

Key store path represent the new keystore you will create, choose a folder and a name using the 3 dots icon on the right, i choosed C:\Android\upload_key.jks (.jks extension will be added automatically)

NOTE: I used upload as the new alias name but if you previously used the same keystore with different aliases to sign different apps, you should choose the same aliases name you had previously in the original keystore.

完成后按确定,现在您将拥有一个新的 upload_key.jks 密钥库。您现在可以关闭 Android Studio。

步骤 5:我们需要从新创建的 upload_key.jks 密钥库中提取上传证书。 打开终端并输入:

keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -file PATH_TO_OUTPUT_FILE

图例:

  • UPLOAD_KEYSTORE_PATH = 您刚刚创建的上传密钥库的路径。在这种情况下是 C:\Android\upload_key.jks.
  • UPLOAD_KEYSTORE_ALIAS = 与上传密钥库关联的新别名。在这种情况下是 upload.
  • PATH_TO_OUTPUT_FILE = 扩展名为 .pem 的输出文件的路径。类似于 C:\Android\upload_key_public_certificate.pem.

示例:

keytool -export -rfc -keystore "C:\Android\upload_key.jks" -alias upload -file "C:\Android\upload_key_public_certificate.pem"

按 Enter 键,您将需要提供密钥库密码。

现在,如果一切顺利,您将在文件夹 PATH_TO_OUTPUT_FILE 中有一个名为 upload_key_public_certificate.pem.

的文件

第 6 步:点击与下图相同的按钮上传 upload_key_public_certificate.pem 文件

第 7 步:单击 App Signing 页面末尾的 ENROLL 按钮。

现在每个新版本的 APK 都必须使用 upload_key.jks 密钥库和在 步骤 4 中创建的别名进行签名,然后才能上传到 Google Play开发者控制台。

更多资源:

问答

问:当我上传使用新 upload_key 密钥库签名的 APK 时,Google Play 显示如下错误:您上传了一个未签名的 APK。您需要创建签名的 APK.

A:检查以在构建发布 APK 时使用两个签名(V1 和 V2)对 APK 进行签名。阅读 了解更多详情。

已更新

第 4、5、6 步是创建上传密钥,对于现有应用程序是可选的

“上传密钥(现有应用可选):您在注册该计划期间生成的新密钥。您将使用上传密钥对所有未来的 APK 进行签名,然后再将它们上传到 Play 管理中心。” https://support.google.com/googleplay/android-developer/answer/7384423

当您将 Fabric 用于 public 测试版(使用产品配置签名)时,请勿使用 Google 播放应用程序签名。 您必须在构建两个已签名的 apk 之后!

当您分发到更多游戏商店(三星、亚马逊、小米等)时,您将必须再次构建两个已签名的 apk。

所以请务必小心 Google Play App Signing。

无法还原它:/ 和 Google 在接受使用生产密钥签名的 apk 后无法播放。启用后 Google Play App Signing 仅接受上传密钥...

CI 分发真的很复杂...

下一期升级:https://issuetracker.google.com/issues/69285256

我必须执行以下操作:

  1. 在 google 游戏控制台中创建应用

2.Go 到 应用发布 -> 管理生产 -> 创建发布

3.Click 继续 Google Play App Signing

4.Create 通过 运行 "keytool -genkey -v -keystore c:\path\to\cert.keystore -alias uploadKey -keyalg RSA -keysize 2048 -validity 10000”上传证书

5.Sign 带有生成证书的 apk (c:\path\to\cert.keystore)

6.Upload 在 应用发布 -> 管理生产 -> 编辑发布中签署 apk

7.By 正在上传 apk,第 4 步中生成的证书已添加到 App 签名证书 并成为您未来所有版本的签名证书。

执行以下操作:

"CREATE APPLICATION" having the same name which you want to upload before.
Click create.
After creation of the app now click on the "App releases"
Click on the "MANAGE PRODUCTION"
Click on the "CREATE RELEASE"
Here you see "Google Play App Signing" dialog.
Just click on the "OPT-OUT" button.
It will ask you to confirm it. Just click on the "confirm" button

有一个更简单的解决方案,需要一分钟。

  1. 在google play console,select 版本管理 -> App signing
  2. 选择第一个选项,使用 Android Studio 生成加密的私钥(或类似的东西;我不能再回头看那个页面了)
  3. 在 Android Studio 中从 Build -> Generate Signed Bundle / APK 生成您的 Android App Bundle(.aab 文件) ...,选择 Android App Bundle 选项并且不要忘记勾选 Export Encrypted key(需要注册您的应用 Google Play App signing) 选项。如果您没有生成密钥库,请临时生成一个。
  4. 现在是“棘手”的部分。 .aab 文件生成后,Android Studio 会在右下角弹出一条通知,其中包含.aab 文件保存位置的路径。在同一通知中,如果您展开它,您会发现另一个 link 到保存私钥的路径(称为 private_key.pepk)。如果您错过了这个通知,别担心,只需点击右下角的 事件日志 按钮打开 事件日志 window边,你会发现相同的信息。打开那个location.For我是C:\Users\yourUser\.android

  1. 返回浏览器并按 APP SIGNING PRIVATE KEY 按钮并浏览到您计算机上的私钥位置。

完成!

现在您可以上传之前生成的版本了:) 祝你好运!

在将 Android 应用程序包文件 (APK) 迁移到 Android App Bundle (AAB) 时,将应用程序发布到 Play 商店时,我遇到了这个问题并得到了如下解决...

构建 .aab 文件时,系统会提示您输入存储密钥导出路径的位置,如下所示:


在第二张图片中,您可以找到加密密钥导出路径位置我们的 .pepk 在生成 .aab 文件时将存储在特定文件夹中的位置。

使用 Play 商店凭据登录 Google Play 管理中心后: select 您的项目从左侧选择 App Signing 选项 Release Management>>App Signing

您会找到 Google 应用签名认证 window 接受它。

之后你会发现三个单选按钮select **

Upload a key exported from Android Studio radio button

**,它会让你膨胀 APP SIGNING PRIVATE KEY 按钮如下

单击按钮并选择 .pepk 文件(我们在生成 .aab 文件时存储,如上所述)

阅读所有其他选项并提交。

成功后,您可以返回应用程序发布并浏览 .aab 文件并完成 RollOut...

@Ambilpura

对于已更新的 Google 控制台,请转到内部设置并打开应用程序完整性。并在此处上传您的密钥。你会很高兴的。