如何为Google应用签名生成上传密钥?

47

我目前在为上传密钥苦苦挣扎,这是将APK签名以发布到Google Play的新方法。

我已经做了什么

  1. 我创建了一个新应用程序,现在应该存在于Play商店中。
  2. 我在Play控制台上创建了一个应用程序条目。
  3. 然后我激活了Google Play应用签名
  4. 我使用普通keystore文件上传了我的已签名APK。

然后我从上传对话框获得以下错误消息。

  

上传失败您上传了一个APK,该APK使用用于签署交付给用户的APK的密钥进行签名。因为您已经加入了App Signing,所以您应该在上传之前使用新密钥签署APK。

问题是什么

我找不到任何内容来上传上传密钥或如何生成类似于此的内容。上传密钥是否等同于keystore文件?

我尝试的方法

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

有人可以帮帮我吗?


1
你在第一步具体做了什么?这样读起来不太好。 - Timothy
5个回答

62

我刚刚经历了一个令人筋疲力尽的过程。我使用React Native,所以除非需要启动虚拟设备,否则我从不使用Android Studio。我为自己和任何其他被这种经历创伤的人记录这些内容。这是专门针对“上传密钥”选项的。然后Google会在Play上将其替换掉,因此您不必真正负责确保您不会失去唯一的财富密钥。

在Android Studio中打开React Native项目中的“android”文件。构建它并做您必须要做的工作,以便让您产生APK(未签名或其他)。如果附加了VD或手机,您也可以从这里运行它。我不得不进行更新才能够构建,因此您可能需要执行相同的操作。

首先,在菜单中选择“Build”:

enter image description here

将出现此窗口:

enter image description here

点击“创建新的...”

会出现如下对话框。使用您的信息填写它。请注意,有两个单独的密码。记住您稍后放置的内容。

enter image description here

前往您想要存储密钥的位置。在React Native中,已经有一个名为“keystores”的文件夹,位于MyApp > android > app。通过点击“...”按钮选择该路径作为密钥库路径。

enter image description here

输入您希望使用的密钥名称。我给它起了与应用程序相同的名称。

这将带您回到先前的对话框。填写之前的密码并单击“下一步”。

在此输入图片描述

这将带您到此对话框,您可以选择放置apk的位置。在React Native中,默认情况下它会进入MyApp > android > app > app-release.apk。点击那两个复选框,否则您将不得不更改一些配置,或者Google Play将拒绝它。它们最初未被选中。

在此输入图片描述

进入您开发人员控制台的此页面。单击“编辑发布”。假定您已经设置了 beta 或 alpha 发布。(此处未涉及)

在此输入图片描述

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

在此输入图片描述

请谷歌在某个地方记录此过程!愿一切顺利!


2
勾选这两个框确实有所不同,我胆怯地认为完整的apk签名就足够了。感谢您提供的详细信息。 - leonardkraemer
3
如何使上传密钥与Play商店上的上传证书匹配?我已启用Google Play签名,但仍然不知道如何获得我的上传密钥。我只从之前未使用Google Play签名时导出了我的应用程序签名密钥,然后他们提供了一个上传证书但是没有密钥! - nickdnk
2
@nickdnk 我知道这有点令人困惑,但是在这篇帖子中对话框中提到的密钥是临时的。这不会给你签名密钥。它会给你一个密钥,你提交后Google会将其替换。 - GenericJam
我知道。我说的是上传密钥。我只有证书,但我不确定密钥是从哪里来的?然而,今天我成功地上传了一个应用程序,方法是将upload_key.der文件导入我的密钥库中。我曾经认为.der文件只包含公共部分,但我想我错了。 - nickdnk
勾选这两个框是我之前遗漏的。太好了,我在这里碰巧发现了。 - lasec0203
显示剩余2条评论

16

在最新版的Android Studio中创建签名包,与通常一样使用jks签署您的应用程序,但请勾选"导出加密密钥"。

  1. 在最新版的Android Studio中创建签名包,与通常一样使用jks签署您的应用程序,但请勾选"导出加密密钥"。

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

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

1
非常感谢您,这是最佳答案。 - Valerie Castle
非常感谢,没有谷歌指南,也没有其他人提到私钥到底导出到哪里了。 - Trevor
1
那是实际的上传密钥吗? - gmartinsnull
1
我没有“导出加密密钥”复选框。 - Blue Bot
2
我没有看到“导出加密密钥”选项。你使用的AS版本是什么? - SMBiggs
显示剩余5条评论

13

对我来说,截至2019年2月我的经历是不同的。

在上传签名密钥时,我没有完成可选的“上传密钥”部分,因为它说我可以稍后完成这一步骤。

输入图像描述

在我上传签名密钥并按下“完成”后,它显示我现在拥有一个上传密钥,即使我还没有创建一个。

输入图像描述

花了我一些时间才发现签名证书和上传证书的指纹相同,也就是说,谷歌已经悄悄地将我的签名密钥注册为上传密钥。

希望这能帮助别人。


5
我了解您的问题。第一页应用程序签名页面提到您可以暂时跳过上传密钥步骤并稍后上传一个,但我找不到任何地方可以上传新的上传密钥。 - Simon Raes
我的Play控制台显示相同的内容。你后来解决了如何上传“上传密钥”的问题吗?此外,在我的情况下,虽然我可以上传应用程序包,但是Google在更新应用程序时不会计算二进制差异。每次都会传递完整的APK文件。你的情况怎么样? - BorhnN
3
嗨 @BorhnN - 我联系了Google后成功更新了上传密钥,我想这可能是唯一的方法。我的应用包没有任何问题。 - yury.ku
你好 @yury.ku,今天我尝试找到上传密钥的地方。但是它说需要联系开发者支持。是否有其他地方可以上传密钥? - Sajith Vijesekara
截至2021年1月,唯一的选择是通过此表格联系Google支持:https://support.google.com/googleplay/android-developer/contact/key - Bartosz

8
根据帮助页面

上传密钥:在计划注册期间生成的新密钥。您将使用上传密钥在将未来的APK上传到Play Console之前对其进行签名。

因此,它只是使用现有流程生成的新密钥。

15
但是我在哪里可以生成这个密钥呢?通常是使用Android Studio中内置的密钥库工具生成器吗? - Julian Schmuckli
1
是的,完全相同的过程。 - ianhanniballake
1
@ianhanniballake 应用中使用的服务(例如 AdMobs、分析等)所使用的密钥如何?我假设应该是应用签名密钥(由 Play 控制台管理),而不是上传密钥。 - Vairavan
2
@Vairavan - 是的,这些服务依赖于应用程序签名密钥。开发控制台显示签名密钥的MD5、SHA-1和SHA-256,就是为了这个原因。 - ianhanniballake
@ianhanniballake 谢谢。有没有办法从Play控制台下载的PEPK工具中获取SHA? - Vairavan

5
您提到的Android开发者页面(签署APK)清楚地介绍了如何使用Android Studio生成密钥。请注意生成密钥和密钥库部分。 在创建上传密钥方面与创建签名密钥没有区别,只是用途不同。上传密钥仅用于将APK上传到Google服务器以进行身份验证。然后,Google会为您实际签署应用。

我已经尝试按照那个页面的步骤操作,但是我的Studio 3.1.4中的Build菜单没有所述的路径,因此我无法生成上传证书。另外,我正在Unity中开发应用程序,它将签名并导出APK,因此我没有在Studio中打开的项目? - Piginhat
我也在使用Unity。如何使Android Studio正确打开,以便我可以访问此签名菜单的过程是什么? - Adam B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接