首页 > 解决方案 > 带有上传证书的Android Sign APK(如何确保正确的指纹)

问题描述

这是 Google 关于签署 APK 的文档: https ://developer.android.com/studio/publish/app-signing.html

文档看起来相当简单。我已经能够将来自其他各个页面和 Stack Overflow 线程的进程拼凑起来。但是,在我签署了 APK 之后,APK 中的 SHA-1 证书指纹是错误的,这意味着我没有使用正确的证书签署 APK。

您上传的 APK 未使用上传证书进行签名。您必须使用相同的证书。上传证书有指纹:

[SHA1:指纹]

并且用于签署您上传的 APK 的证书有指纹:

[SHA1:指纹]

我的问题是:如何确保我生成的密钥库正在使用来自 Google Play 控制台的上传证书?

这是我所做的:

我错过了哪些步骤?

注意:谷歌文档说这是手动签名的过程:

https://developer.android.com/studio/publish/app-signing.html#sign-manually

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

apksigner 签名 --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk

但是这些步骤不以任何方式使用上传证书......

现在必须使用您的上传密钥对现有应用的所有更新进行签名。这将允许 Google 验证您的身份。

这是完全有道理的。本质上,我要做的就是用我从谷歌上传的密钥对 APK 进行签名。我有上传密钥。但是,谷歌没有记录的步骤是如何将上传密钥转入密钥库,以便我可以使用密钥库签署 APK。它看起来很直截了当,但它不起作用。

标签: javaandroidvisual-studioxamarinsigning

解决方案


看来您丢失了私钥。上传证书是您的第一个上传应用程序的证书,并在您上传时创建。您需要使用该.keystore文件来签署您的应用程序。

如何确保我生成的密钥库正在使用来自 Google Play 控制台的上传证书?

这是不可能的。根据 Google管理您的应用签名密钥

证书:证书包含一个公钥以及一些关于谁拥有该密钥的额外标识信息。

证书不包含私钥。所以它不能用来创建密钥库。

解决此问题的唯一方法是重置上传密钥,如上述文章末尾所述。

您可以参考以下指南在 xamarin 中发布应用程序:
发布到 Google Play
签署 Android 应用程序包
手动签署 APK


推荐阅读