如何启用Google Play应用签名


112

我认为许多开发人员正在尝试了解有关在Google I / O 2017上展示的新Google Play应用签名功能的更多信息。

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

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

使用以下答案,我将更好地解释上传原始密钥库所需的步骤以及如何创建新的上传密钥库,从现在开始,您将需要对其进行签名。

Answers:


189

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

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

  1. Android Studio

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

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

在此处输入图片说明

接受应用程序签名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 =此加密密钥应始终相同。您可以在“应用程序签名”页面中找到它,然后将其复制并粘贴。应采用以下形式: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-别名UPLOAD_KEYSTORE_ALIAS-文件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

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

在此处输入图片说明

步骤7:点击“应用签名”页面末尾的“ 注册”按钮。

在此处输入图片说明

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

更多资源:

问答环节

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

答:在构建发行版APK时,请选中两个签名(V1和V2)以对APK签名。在此处阅读更多信息。

更新

步骤4,5,6用于创建上传密钥,该密钥对于现有应用是可选的

“上传密钥(现有应用程序的可选):您在注册该程序期间生成的新密钥。在将所有将来的APK上传到Play控制台之前,您将使用该上传密钥对所有将来的APK进行签名。” https://support.google.com/googleplay/android-developer/answer/7384423


3
您的演练非常有帮助!他们应该将其放在官方网站上大声笑。您的示例的路径名缺少“ _”引号,这将在W10控制台上引发错误
NukeouT

3
仅当路径内部至少有一个空格时才需要使用引号,但这是每个控制台命令都起作用的方式。因此,如果路径为:,则必须使用引号;"C:\My Path\MyName"但如果路径为,则不必使用引号C:\MyPath\MyName。顺便说一句谢谢:)
MatPag '17

1
@layth创建新的密钥库是Step 4指南的内容:D
MatPag '17

1
我这样做了,但是当我看到新的密钥库对话框时,其密钥库路径和密码字段为空,因此我将它们指向旧的密钥库并输入了其旧密码-btw当前卡在“ keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS-文件PATH_TO_OUTPUT_FILE”一直抱怨它不知道键盘工具的含义。我尝试添加“ C:\ Program Files \ Java \ jdk1.8.0_25 \ bin \ keytool.exe”,但这没有用,可能是因为我不知道将其确切放置在哪里
。– NukeouT

9
好像Google更改了程序,因为我找不到PEPK工具了。
安德烈·莫托

31

有一个简单得多的解决方案,将花费一分钟。

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

在此处输入图片说明

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

做完了!

现在,您可以上传先前生成的发行版了:)祝您好运!


1
这是最好,最简单的答案
Simon

为我节省了很多时间,更重要的是,我节省了内心的平静
Meenohara

我没有此选项导出加密密钥(需要注册您的应用程序Google Play应用程序签名)选项。
贾维斯

我真的很希望对点5进行更全面的解释-我看不到此按钮,它在哪里,也许是在最近的更新中布局已更改?
androidneil

好的,现在我想在下次更新时对此感到好奇吗?就像是我们需要再次使用.pepk密钥,还是必须使用相同的密钥或新的.pepk专用密钥对版本2进行签名
Sunil Chaudhary19年

14

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

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

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

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

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

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

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

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

在此处输入图片说明

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

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

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

@Ambilpura


好的,现在我想在下次更新时对此感到好奇吗?就像是我们需要再次使用.pepk密钥,还是必须使用相同的密钥或新的.pepk专用密钥对版本2进行签名
Sunil Chaudhary19年

据我了解,下次无需创建,您可以使用旧的.pepk密钥....
Ambilpura Sunil Kumar

您如何使用.pepk进行更新?我在上载我的应用程序时成功使用了Google应用程序签名,但是现在我正在尝试推送更新,并且不知道@AmbilpuraSunilKumar
nt95 '19

同样在这里。我只是将abb上传到游戏商店,而完全忽略了.pepk文件。知道它到底有什么用,以及在更新应用程序时该怎么做将是很高兴的。
朱利安·艾格斯

4

我必须执行以下操作:

  1. 在Google Play控制台中创建应用 在此处输入图片说明

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

3.单击继续以执行Google Play应用签名 在此处输入图片说明

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,在App版本->管理生产->编辑版本中上传签名的APK

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


1
我确实做到了这一点,但是如果我通过Google Play商店安装应用程序,则无法从我的应用程序登录google。*但是*如果我从发布管理页面下载apk并将其手动安装到我的模拟器/设备中,它将可以正常工作。知道我缺少什么吗?
Raghudevan Shankar's

我到处搜寻了大约3个小时,您终于救了我!
奥利弗·迪克森

3

当您使用Fabric进行公开Beta版发布(使用prod config签名)时,请勿使用 Google Play应用签名。建立两个已签名的APK之后,您将必须!

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

因此,请务必谨慎使用Google Play应用签名。

:/不可能还原它,并且在接受用生产密钥签名的apk之后Google Play不能恢复。启用Google Play应用签名后,仅接受上传密钥...

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

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


1
大胆DON'T USE的注释类型很危险。您能否详细说明问题和推荐的解决方案?根本没有解决方案吗?为Fabric两次签名APK如此困难吗?
Gokhan Arik

1
我并不是很难对APK进行两次签名,但是正如我所描述的,您必须构建两个(或更多)不完全相同的APK(因此,您正在Fabric Fabric Beta上测试与要发布到Play商店的文件不同的文件)。在beta测试器上构建测试产品的松散点……您正在测试另一个文件:)。这只是对拥有一些复杂CI / CD的人们的警告,他们必须对其进行修改……
mtrakal

2
请注意,即使注册了App签名,Google Play现在也接受使用生产密钥签名的APK。
Pierre

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

之后,我是否可以像以前一样在应用购买和播放服务中进行测试?您对此有任何经验吗?因为即使我也不喜欢做任何繁重的步骤。
Siddharth

1
对于“如何启用 Google Play应用签名”来说,这不是一个合适的答案……
Ben Madsen

2
您认为合适的方法是什么?
斯特林·迪亚兹
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.