ChatGPT解决这个技术问题 Extra ChatGPT

如何启用 Google Play 应用签名

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

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

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

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


M
MatPag

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

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

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

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

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

https://i.stack.imgur.com/u1EFx.png

接受应用签名服务条款。

https://i.stack.imgur.com/A5UNC.png

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

https://i.stack.imgur.com/C38dG.png

第二步:打开终端,输入:

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 的路径,对于 Windows 用户,可能类似于 C:\Users\YourName\Downloads\pepk.jar。

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 页面中找到它,复制并粘贴它。应该是这种形式:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48bde

例子:

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

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

密钥库密码 别名密码

如果一切正常,您现在将在 PATH_TO_OUTPUT_FILE 文件夹中有一个名为 private_key.pem 的文件。

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

https://i.stack.imgur.com/g0h3P.png

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

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

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

https://i.stack.imgur.com/O9okH.png

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

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

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

https://i.stack.imgur.com/ylgIh.png

完成后按 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 = 与上传密钥库关联的新别名。在这种情况下是上传。

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 的文件。

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

https://i.stack.imgur.com/doYzq.png

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

https://i.stack.imgur.com/sEeOp.png

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

更多资源:

关于 Google Play 应用签名的 Google 文档

丢失上传密钥库时请求重置的表单

问答

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

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

更新

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

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


您的演练非常有帮助!他们应该把它放在官方网站上大声笑您的示例的路径名缺少“_”引号,这将在 W10 控制台上引发错误
仅当路径中至少有一个空格时才需要引号,但这是每个控制台命令的工作方式。因此,如果您的路径是:"C:\My Path\MyName",则必须使用引号,但如果路径是 C:\MyPath\MyName,则不需要。顺便说一句谢谢:)
@layth 创建新的密钥库是指南的Step 4:D
@NukeouT 不,您不需要第 4 步中的旧密钥库和密码。您只需单击 Create New,就会出现新的密钥库提示。我已经更新了文档以使这一步更加清晰,即使我认为它已经
看起来谷歌改变了程序,因为我再也找不到 PEPK 工具了。
c
chengsam

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

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

https://i.stack.imgur.com/DpIQo.jpg

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

完毕!

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


我没有收到此选项导出加密密钥(需要注册您的应用 Google Play 应用签名)选项。
我真的很感谢对第 5 点的更全面的解释——我没有看到这个按钮,它在哪里,也许布局在最近的更新中发生了变化?
好的,现在我想在下一次更新时对此感到好奇该怎么办??就像我们再次需要 .pepk 密钥,或者我们必须使用相同的密钥或新的私有 .pepk 密钥签署版本 2 请帮助
目前,Google Play 控制台中没有这样的按钮......他们有“应用程序完整性”菜单,没有上传新密钥的选项......
A
Ambilpura Sunil Kumar

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

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

https://i.stack.imgur.com/AGQ1R.png

https://i.stack.imgur.com/WKCdF.png

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

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

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

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

https://i.stack.imgur.com/dYW6v.png

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

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

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

@Ambilpura


好的,现在我想在下一次更新时对此感到好奇该怎么办??就像我们再次需要 .pepk 密钥,或者我们必须使用相同的密钥或新的私有 .pepk 密钥签署版本 2 请帮助
根据我的理解,下次不需要创建,你可以使用旧的 .pepk 密钥....
您如何使用 .pepk 进行更新?我在上传我的应用程序时成功使用了谷歌应用程序签名,但现在我试图推送更新并且不知道如何@AmbilpuraSunilKumar
同样在这里。我只是将 abb 上传到 Play 商店并完全忽略 .pepk 文件。很高兴知道它到底有什么好处以及更新应用程序时要做什么。
C
Community

我必须做以下事情:

在 google play 控制台中创建应用程序

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

https://i.stack.imgur.com/glsbm.png

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证书中,并成为您未来所有构建的签名证书。


我确实这样做了,但是如果我通过 Google Play 商店安装应用程序,我的应用程序中的 google 登录将不起作用。 *但是*如果我从发布管理页面下载 apk 并将其手动安装到我的模拟器/设备中,它就可以工作。知道我错过了什么吗?
K
Kapil Bansal

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

https://i.stack.imgur.com/BHTNG.jpg


如何将其纳入适当的原始答案或这是替代品?
请注意——您需要成为帐户所有者才能同意这些条款,因此如果您与另一家公司合作,您需要让他们获得私钥来执行上传和保存文件,然后他们可以同意条款。
m
mtrakal

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

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

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

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

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

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


粗体大写 DON'T USE 类型的评论是危险的。你能详细解释一下这个问题和推荐的解决方案吗?根本就没有解决办法吗?为 Fabric 签署两次 APK 有那么难吗?
我对 APK 进行两次签名并不难,但正如我所描述的,您必须构建两个(或更多)不相同的 APK(因此您正在测试 Fabric Beta 与将发布到 Play 商店的文件不同的文件)。它失去了在 beta 测试人员上测试生产构建的点……您正在测试另一个文件:)。这只是对拥有一些复杂 CI/CD 的人的警告,他们必须对其进行更改......
请注意,即使在注册应用签名之后,Google Play 现在也接受使用生产密钥签名的 APK。
S
Sterling Diaz

请执行下列操作 :

"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

在此之后,我可以像以前一样在应用购买和播放服务中进行测试吗?你有这方面的经验吗?因为即使我也不喜欢做任何沉重的步骤。
对于“如何启用 Google Play 应用签名”来说,这并不是一个合适的答案......