145

我认为很多开发人员都在尝试更多地了解 Google I/O 2017 上展示的新 Google Play 应用签名功能。

存储密钥库以在 Google Play 中对应用程序进行签名的能力可以节省您安全存储密钥库的工作,并且可以帮助系统根据硬件和操作系统特性优化提供给每个设备的 APK。

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

通过以下答案,我将更好地解释上传原始密钥库所需遵循的步骤以及如何创建新的上传密钥库,从此时起您将需要签署您的 APK。

4

7 回答 7

224

在继续观看此 Android 开发人员视频以了解您的应用签名注册选择的含义之前: https ://youtu.be/odv_1fxt9BI

本指南面向已在 Play 商店中拥有应用程序的开发人员。如果您开始使用新应用程序,则过程会容易得多,您可以按照此处的“新应用程序”段落的指南进行操作

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

  1. 安卓工作室

  2. JDK 8 和安装后,您需要在用户空间中设置环境变量以简化终端命令。在 Windows x64 中,您需要将此 : 添加C:\Program Files\Java\{JDK_VERSION}\binPath环境变量中。(如果您不知道如何执行此操作,可以阅读我的指南以将文件夹添加到 Windows 10Path环境变量)。

第 0 步:打开 Google Play 开发者控制台,然后转到Release Management -> App Signing

在此处输入图像描述

接受应用签名服务条款。

在此处输入图像描述

第 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.jarWindows 用户。
  • PATH_TO_KEYSTORE = 用于签署发布 APK 的密钥库的路径。可以是 *.keystore 或 *.jks 类型的文件或不带扩展名的文件。C:\Android\mykeystore之类的东西C:\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" --加密密钥=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

按 Enter 键,您需要按顺序提供:

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

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

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

在此处输入图像描述

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

您将来将需要此密钥库来签署您的应用程序的下一个版本,不要忘记密码

打开您的一个 Android 项目(随机选择一个)。转到Build -> Generate Signed APK并按Create new

在此处输入图像描述

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

密钥库路径代表您将创建的新密钥库,使用右侧的 3 点图标选择文件夹和名称,我选择了C:\Android\upload_key.jks(.jks 扩展名将自动添加)

注意:我使用upload了新的别名,但如果您之前使用具有不同别名的相同密钥库来签署不同的应用程序,您应该选择之前在原始密钥库中使用的相同别名。

在此处输入图像描述

完成后按 OK,现在您将拥有一个新的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" -别名上传 -file "C:\Android\upload_key_public_certificate.pem"

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

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

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

在此处输入图像描述

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

在此处输入图像描述

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

更多资源:

问答

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

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

更新

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

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

于 2017-05-22T00:17:40.817 回答
45

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

  1. 在 google play 控制台中,选择发布管理->应用签名
  2. 选择第一个选项,即使用 Android Studio 生成加密私钥的选项(或类似的;我不能再回头查看该页面了)
  3. 在 Android Studio 中,从Build -> Generate Signed Bundle / APK...生成您的 Android App Bundle (.aab 文件) ,选择Android App Bundle选项,不要忘记检查Export Encrypted key (需要注册您的应用 Google Play App签名)选项。如果您没有生成密钥库,请生成一个临时的。
  4. 现在是“棘手”的部分。生成 .aab 后,Android Studio 会在右下角弹出一个通知,其中包含 .aab 文件保存位置的路径。在同一个通知中,如果您将其展开,您会发现另一个指向保存私钥的路径的链接(称为private_key.pepk)。如果您错过了此通知,请不要担心,只需单击右下角的“事件日志”按钮打开“事件日志”窗口,您就会找到相同的信息。打开那个位置。对我来说是 C:\Users\yourUser\.android

在此处输入图像描述

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

完毕!

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

于 2018-11-19T23:32:17.727 回答
25

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

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

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

使用 Play 商店凭据登录 Google Play 控制台后:从左侧选择您的项目 选择 App Signing 选项 Release Management>>App Signing 在此处输入图像描述

您会发现 Google App Signing Certification 窗口接受它。

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

上传从 Android Studio 单选按钮导出的密钥

**,它将扩展您的 APP SIGNING PRIVATE KEY 按钮,如下所示

在此处输入图像描述

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

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

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

@Ambilpura

于 2019-07-25T06:39:04.567 回答
7

我必须做以下事情:

  1. 在 google play 控制台中创建应用程序 在此处输入图像描述

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

3.点击继续谷歌播放应用签名 在此处输入图像描述

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

5.使用生成的证书签署您的 apk (c:\path\to\cert.keystore)

6.在App版本中上传签名的apk -> 管理生产 -> 编辑版本

7.通过上传apk,步骤4中生成的证书已添加到App Signing证书中,并成为您未来所有构建的签名证书。

于 2017-11-02T16:21:38.463 回答
7

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

更新的谷歌控制台的屏幕截图

于 2021-03-24T18:22:20.620 回答
4

当您将Fabric用于公开测试版(使用 prod config 签名)时,请勿使用Google Play 应用签名。您必须在构建两个签名的 apk 之后!

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

因此,请务必小心使用 Google Play 应用签名。

无法恢复它:/并且 Google Play 在接受使用生产密钥签名的 apk 后没有这样做。启用 Google Play 应用签名后,仅接受上传密钥...

它确实使 CI 分布复杂化......

升级的下一个问题:https ://issuetracker.google.com/issues/69285256

于 2017-10-24T10:26:25.463 回答
2

请执行下列操作 :

"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
于 2017-11-05T06:49:37.087 回答