如何为 Google App Signing 生成上传密钥?

Posted

技术标签:

【中文标题】如何为 Google App Signing 生成上传密钥?【英文标题】:How to generate an upload key for Google App Signing? 【发布时间】:2017-10-20 19:35:30 【问题描述】:

我目前正在努力使用上传密钥,这是签署 APK 以将其发布到 Google Play 的新方法。

我做了什么

    我创建了一个新应用,它现在应该在 Play 商店中。 我在 Play 控制台上创建了一个应用入口。 然后我激活了Google Play App Signing 我上传了带有普通密钥库文件的签名 APK。

然后我从上传对话框中收到以下错误消息。

上传失败您上传的 APK 使用以下密钥签名 还用于签署交付给用户的 APK。因为你是 注册了 App Signing,您应该使用新密钥签署您的 APK 上传之前。

有什么问题

我没有找到任何可以上传upload key 或如何生成类似内容的内容。上传密钥是否等于密钥库文件?

我尝试过的事情

然后我查看了应用签名here 的文档。但我不明白如何创建此上传密钥并将其发送给 Google。

谁能帮帮我?

【问题讨论】:

您在第 1 步中究竟做了什么?不好读 【参考方案1】:

我刚刚经历了这个令人筋疲力尽的过程。我使用的是 React Native,所以我什至从不使用 android Studio,除非我需要启动虚拟设备。我正在为我自己和其他任何因这次经历而受到创伤的人记录下来。这明确用于“上传密钥”选项。然后,Google 将其在 Play 上换掉,因此您无需真正负责确保自己不会丢失这把唯一的财富钥匙。

在 Android Studio 中打开 React Native 项目中的“android”文件。构建它并做任何你必须做的事情,因此它为你提供了生成 APK(未签名或其他)的选项。您也可以从此处在 VD 或手机上运行它(如果已连接)。我必须进行更新才能构建它,因此您可能也需要这样做。

首先进入菜单中的“构建”:

会出现这个窗口:

点击“新建...”

会出现这样的对话框。填写您的信息。请注意,有两个单独的密码。记住你放在那里的东西。

转到您要存储密钥的地方。在 React Native 中,MyApp > android > app 中已经有一个名为“keystores”的文件夹。通过单击“...”按钮选择它作为密钥存储路径。

键入任何您想要调用的密钥。我给它取了与应用程序相同的名称。

这将带您回到上一个对话框。填写之前的密码,然后点击“下一步”。

这将带您进入此对话框,您可以在其中选择放置 apk 的位置。默认情况下,在 React Native 中,它会转到 MyApp > android > app > app-release.apk。单击这两个复选框,否则您将不得不更改某些配置,否则 Google Play 将拒绝它。他们一开始是未经检查的。

在您的开发人员面板中转到此页面。单击“编辑版本”。这是假设您已经设置了 beta 或 alpha 版本。 (这里没有介绍。)

这会将您带到此页面。将您的 apk 拖放到此处或使用按钮上传。

Google,请在某处记录此过程!安息吧!

【讨论】:

勾选这两个框真的很重要,我胆怯地认为完整的 apk 签名就足够了。谢谢你的详细信息。 如何获取与 Play 商店上的上传证书匹配的上传密钥?我启用了 Google Play 签名,但仍然不知道如何获取我的上传密钥。我只在不使用 Google Play 签名时导出了我的应用签名密钥,然后他们为我提供了上传证书但没有密钥?! @nickdnk 如果你走这条路,谷歌会抓住关键。这就是重点。你不能以这种方式失去它。如果您想自己保留密钥,您可以自己生成密钥。它是一个命令行工具。 developer.android.com/studio/publish/app-signing @nickdnk 我知道这有点令人困惑,但这篇文章中这些对话框中提到的关键是临时的。这不会给你签名密钥。它为您提供了一个您提交的密钥,Google 会将它们换掉。 我知道。我说的是上传密钥。我只有证书,但我不确定密钥来自哪里?通过将upload_key.der文件导入我的密钥库,我今天成功地上传了一个应用程序。我只是觉得 .der 文件只包含公共部分,但我猜不是。【参考方案2】:

    在最新版本的 Android Studio 中创建一个签名包,像往常一样使用 jks 为您的应用签名,除非选中“导出加密密钥”。

    默认情况下,您的私钥将导出到 ~/.android/private_key.pepk。

【讨论】:

非常感谢,这是最好的答案。 非常感谢,没有谷歌指南,也没有人提到私钥导出到哪里。 那是实际的上传密钥吗? 我没有“导出加密密钥”复选框 @gmartinsnull 是的。【参考方案3】:

对我来说,截至 2019 年 2 月的体验有所不同。 在上传签名密钥时,我没有完成可选的上传密钥部分,因为它说我可以稍后完成此步骤。

在我上传了一个签名密钥并按下完成后,它说我现在有一个上传密钥,即使我还没有创建一个,我也可以继续使用。

我花了一些时间才发现签名证书和上传证书的指纹是相同的,即 Google 已将我的签名密钥静默注册为上传密钥。

希望这对某人有所帮助。

【讨论】:

我也一样。第一个应用签名页面提到您现在可以跳过上传密钥步骤,稍后再上传,我在任何地方都找不到上传新上传密钥的选项。 我的游戏控制台显示相同。您后来是否知道如何上传“上传密钥”。此外,在我的情况下,虽然我可以上传应用程序包,但谷歌在更新应用程序时不会计算二进制差异。每次交付完整的 apk。你的呢? 嗨@BorhnN - 我稍后可以通过联系 Google 更新上传密钥 - 我想这是唯一的方法。我这边的应用程序包没有问题。 嗨@yury.ku 今天我试图找到上传密钥的地方。但它说需要联系开发人员支持。还有其他地方可以上传key吗? @SajithVijesekara 自 2021 年 1 月起,唯一的选择是通过此表单联系 Google 支持:support.google.com/googleplay/android-developer/contact/key【参考方案4】:

根据Help Page:

上传密钥:您在注册程序期间生成的新密钥。您将使用上传密钥对所有未来的 APK 进行签名,然后再将它们上传到 Play 管理中心。

所以它只是您使用现有流程生成的新密钥。

【讨论】:

但是我在哪里可以生成这个密钥。通常使用 Android Studio 中的内置密钥存储工具生成器? 是的。完全相同的过程。 @ianhanniballake 他们的密钥如何用于应用程序中使用的服务,如 AdMobs、Analytics 等。我假设应该是应用程序签名密钥(由播放控制台管理)而不是上传密钥. @Vairavan - 是的,这些服务依赖于应用签名密钥。出于这个原因,开发控制台会显示签名密钥的 MD5、SHA-1 和 SHA-256。 @ianhanniballake 谢谢。有没有办法从 Play 控制台下载用于 PEPK 的 SHA?【参考方案5】:

您提到的 Android 开发者页面 (Sign an APK) 清楚地说明了如何使用 Android Studio 生成密钥。注意Generate a key and keystore 部分。

upload key 的创建方式没有什么不同。只是它与签名密钥不同的目的。上传密钥仅用于将 APK 上传到 Google 服务器,以便他们可以对您进行身份验证。然后,Google 会为您进行实际的应用签名。

【讨论】:

我已尝试关注该页面,但我的 Studio 3.1.4 中的构建菜单没有说明路径,因此我无法生成上传证书。我还在 Unity 中开发应用程序,它将签署和导出 APK,所以我没有项目可以在 Studio 中打开? 我也在使用统一。让 android studio 正确打开以便我可以访问此签名菜单的过程是什么?

以上是关于如何为 Google App Signing 生成上传密钥?的主要内容,如果未能解决你的问题,请参考以下文章

启用 Google Play App Signing 我的第一个 apk 唱歌密钥现在是我的上传密钥吗?

How to enable Google Play App Signing

如何为Google App Engine实例指定区域?

要上传 Android App Bundle,您必须注册 Google Play 的 App Signing

Google Play 控制台中的 App Signing 没有退出选项

如何为 gRPC 生成的 Java 代码实现 com.google.protobuf.BlockingRpcChannel?