如何启用Google Play App签名

Mat*_*Pag 84 android google-play android-signing android-app-signing

我认为很多开发者都在尝试了解更多有关Google I/O 2017上展示的新版Google Play App Signing功能的信息.

存储密钥库以在Google Play内部对应用进行签名的功能可以节省您安全存储密钥库的工作量,并可以帮助系统根据硬件和操作系统特性优化为每个设备提供的APK.

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

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

Mat*_*Pag 165

本指南面向已在Play商店中拥有应用程序的开发人员.如果您开始使用新应用程序,则此过程会更容易,您可以从此处遵循"新应用程序"段落的指导原则

99%的开发人员已经拥有的先决条件:

  1. Android Studio

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

第0步:打开Goog​​le Play开发者控制台,然后转到版本管理 - >应用程序签名.

在此输入图像描述

接受App Signing TOS.

在此输入图像描述

步骤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\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

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

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

如果一切正常,您现在将在PATH_TO_OUTPUT_FILE文件夹中调用一个文件private_key.pem.

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

在此输入图像描述

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

你将需要这个关键的未来签署你的APP的下一个版本,不要忘记密码

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

在此输入图像描述

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

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

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

在此输入图像描述

完成后按确定,现在您将拥有一个新的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开发者控制台.

更多资源:

Q&A

问:当我上传使用新的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

  • 看起来谷歌改变了程序,因为我再也找不到PEPK工具了. (5认同)
  • 您的演练非常有用!他们应该把它放在官方网站lol你的例子的路径名缺少"_"引号,它会在W10控制台上引发错误 (3认同)
  • 仅当路径中至少有一个空格时才需要引号,但这是每个控制台命令的工作方式.所以如果你的路径是:`"C:\ My Path\MyName",你必须使用引号,但如果路径是`C:\ MyPath\MyName`则不能.顺便说一句,谢谢你:) (3认同)

小智 21

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

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

在此输入图像描述

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

完成!

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

  • 这是最好的和更简单的答案 (2认同)

小智 9

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

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


小智 6

我必须执行以下操作:

  1. 在 google play 控制台中创建一个应用程序 在此处输入图片说明

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

3.在Google Play App Signing上点击继续 在此处输入图片说明

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

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

6.在应用发布->管理生产->编辑发布中上传已签名的apk

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

  • 我正是这样做的,但如果我通过 Google Play 商店安装应用程序,则从我的应用程序中进行 google 登录将无法正常工作。_*但是*_ 如果我从发布管理页面下载 apk 并将其手动安装到我的模拟器/设备中,它就可以工作。知道我缺少什么吗? (2认同)

mtr*_*kal 5

当您使用Fabric进行公共测试版(使用产品配置签名)时,请勿使用Google Play 应用签名。您必须在构建两个签名的 APK 后!

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

因此,使用 Google Play 应用签名时要非常小心。

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

这确实使 CI 分发变得复杂......

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

  • 请注意,即使在注册应用程序签名后,Google Play 现在也接受使用生产密钥签名的 APK。 (4认同)

Amb*_*mar 5

将Android应用程序包文件(APK)迁移到Android App Bundle(AAB)时,将应用程序发布到Play商店中时遇到了此问题,并在下面得到了解决。

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

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

使用Play商店凭据登录Google Play控制台后:从左侧选择您的项目,然后选择“应用签名”选项发行管理>>应用签名 在此处输入图片说明

您会找到接受它的Google App签名认证窗口。

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

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

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

在此处输入图片说明

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

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

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

@Ambilpura