我想很多开发者都在尝试了解更多关于Google I / O 2017上展示的新版Google Play App Signing功能的信息 .
存储密钥库以在Google Play内部对应用进行签名的功能可以节省您安全存储密钥库的工作量,并可以帮助系统根据硬件和操作系统特性优化为每个设备提供的APK .
您可以在此处的官方文档中阅读有关此主题的更多信息:https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing .
通过以下答案,我将更好地解释您上传原始密钥库所需遵循的步骤以及如何创建新的上传密钥库,从此时起您需要对其进行签名 .
5 回答
当您使用 Fabric 用于公开测试版(使用prod配置签名)时, DON'T USE Google Play应用程序签名 . 你必须在 Build 两个签署的apks之后!
当你分发到更多的游戏商店(三星,亚马逊,小米,......)时,你必须再次 Build 两个签名的apks .
所以要非常小心Google Play App Signing .
It's not possible to revert it :/ 和Google Play在接受使用 生产环境 密钥签名的apks之后没有 . 启用Google Play App Signing后,只接受上传密钥...
它真的使CI分发变得复杂......
下一期升级问题:https://issuetracker.google.com/issues/69285256
我必须做以下事情:
2.转到 App releases -> Manage production -> Create release
3.单击Google Play App上的继续签名
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 releases -> Manage production -> Edit release 上载签名的apk
7.通过上传apk,第4步中生成的证书已添加到 App Signing certificates ,并成为所有未来版本的签名证书 .
请执行下列操作 :
本指南面向已在Play商店中拥有应用程序的开发人员 . 如果您开始使用新应用程序,则此过程会更加轻松,您可以按照here中"New apps"段的指导原则进行操作
Prerequisites that 99% of developers already have :
Android Studio
JDK 8 并且在安装之后,您需要在用户空间中设置环境变量以简化终端命令 . 在Windows x64中,您需要将此命名:
C:\Program Files\Java\{JDK_VERSION}\bin
添加到Path
环境变量中 . (如果您不知道如何操作,可以阅读我的add a folder to the Windows 10 Path environment variable指南) .Step 0 :打开Google Play开发者控制台,然后转到发布管理 - >应用程序签名 .
接受App Signing TOS .
Step 1 :单击与下图相同的按钮下载PEPK工具
Step 2 :打开终端并输入:
传说:
PATH_TO_PEPK =您在 Step 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页面找到它,复制并粘贴它 . 应采用以下形式:
eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a
例:
按Enter键,您需要按顺序提供:
密钥库密码
别名密码
如果一切正常,您现在将在PATH_TO_OUTPUT_FILE文件夹中有一个名为
private_key.pem
的文件 .Step 3 :上传private_key.pem文件,单击与下图相同的按钮
Step 4 :使用Android Studio创建新的密钥库文件 .
打开一个Android项目(随机选择一个) . 转到Build - > Generate Signed APK并按Create new .
现在您应该填写必填字段 .
完成后按确定,然后现在你将有一个新的
upload_key.jks
密钥库 . 您现在可以关闭Android Studio .Step 5 :我们需要从新创建的
upload_key.jks
密钥库中提取上载证书 . 打开终端并输入:传说:
UPLOAD_KEYSTORE_PATH =您刚刚创建的上传密钥库的路径 . 在这种情况下是
C:\Android\upload_key.jks
.UPLOAD_KEYSTORE_ALIAS =与上传密钥库关联的新别名 . 在这种情况下是
upload
.PATH_TO_OUTPUT_FILE =扩展名为.pem的输出文件的路径 . 像
C:\Android\upload_key_public_certificate.pem
之类的东西 .例:
按Enter键,您需要提供密钥库密码 .
现在,如果一切正常,您将在文件夹PATH_TO_OUTPUT_FILE中有一个名为
upload_key_public_certificate.pem
的文件 .Step 6 :上传
upload_key_public_certificate.pem
文件,单击与下图相同的按钮Step 7 :单击“应用程序签名”页面末尾的“ENROLL”按钮 .
现在,每个新版本的APK必须使用
upload_key.jks
密钥库和 Step 4 中创建的别名进行签名,然后才能上传到Google Play开发者控制台 .更多资源:
Google documentation on Google Play App Signing
Form to request the reset of your upload keystore if you lose it
问答
问:当我上传使用新的upload_key密钥库签名的APK时,Google Play会显示如下错误:您上传了未签名的APK . 您需要创建已签名的APK .
答:在构建发布APK时,检查是否使用两个签名(V1和V2)对APK进行签名 . 阅读here了解更多详情 .
更新
步骤4,5,6用于创建上传密钥,对于现有应用程序是可选的
"Upload key (optional for existing apps): A new key you generate during your enrollment in the program. You will use the upload key to sign all future APKs prior to uploading them to the Play Console." https://support.google.com/googleplay/android-developer/answer/7384423
有一个更简单的解决方案需要一分钟 .
在Google Play控制台中,选择 Release management - > App signing
选择第一个选项,即使用Android Studio生成加密私钥的那个选项(或类似的东西;我再也不能回头看那个页面了)
在Android Studio中生成您的Android应用程序包(.aap文件),从 Build - > Generate Signed Bundle / APK... ,选择 Android App Bundle 选项,不要忘记检查 Export Encrypted key (needed to enroll your app Google Play App signing) 选项 . 如果您没有生成密钥库,请生成一个ad-hoc .
现在"tricky"部分 . 生成.aap后,Android Studio将在右下角弹出一个通知,其中包含保存.aap文件的位置的路径 . 在同一通知中,如果要展开它,您将找到另一个指向保存私钥的路径的链接(称为 private_key.pepk ) . 如果您错过了此通知,请不要担心,只需单击右下方的 Event Log 按钮打开 Event Log 窗口,您将找到相同的信息 . 打开那个位置 . 对我来说是C:\ Users \ yourUser \ .android
完成!
现在您可以上传您之前生成的版本:)祝您好运!