我想这个问题已经回答了很多,但是我找不到任何可以理解的答案。
我目前正在开发使用Google Maps API的Android应用。我设法使其工作了一段时间,但我从未真正理解如何正确使用Debug
和Release
键。
我不知道如何通过Android Studio获取我的应用程序的SHA-1调试和发布证书。
在Playstore控制台上,我可以获得SHA-1发行证书(请参见下图),但是在将应用程序发布到商店之前,我不知道如何获得它。那是一个问题,因为当我需要首次发布我的应用程序时,我没有此证书,因此地图无法工作。我必须发布带有损坏地图的应用,然后通过Play商店控制台检索SHA-1证书。
此外,我不知道如何在Android Studio项目中添加调试和发布密钥。在Android
视图的res
文件夹中,我有一个带有调试标签的google_maps_api.xml
(请参见下图)。但是,如何添加一个要发布?是同一把钥匙吗?在这种情况下,为什么在这里有调试标记?
感谢您给我的提示和解释!
答案 0 :(得分:1)
基于Google Maps Places SDK for Android Documentation
调试证书:进行调试构建时,Android SDK工具会自动生成此证书。只使用这个 您正在测试的应用的证书。不要尝试发布 使用调试证书签名的应用。调试证书 在Signing in Debug Mode中有更详细的描述 在Android开发者文档中。
发布证书:执行发布版本时,Android SDK工具会生成此证书。您也可以生成此 使用keytool程序获取证书。当您使用此证书时 准备将您的应用发布给全世界。
现在要获取您的发行证书,请按照以下步骤操作:
找到发布证书密钥库文件。没有发布密钥库的默认位置或名称。如果在构建要发布的应用程序时未指定任何一个,则该构建将使.apk保持未签名状态,并且必须对其进行签名才能发布。对于发行证书,您还需要证书的别名以及密钥库和证书的密码。您可以通过输入以下内容列出密钥库中所有密钥的别名:
keytool -list -keystore your_keystore_name
将your_keystore_name
替换为密钥库的标准路径和名称,包括扩展名 .keystore 。系统将提示您输入密钥库的密码。然后 keytool 显示密钥库中的所有别名。
在终端或命令提示符下输入以下内容:
keytool -list -v -keystore your_keystore_name -alias your_alias_name
将your_keystore_name
替换为密钥库的标准路径和名称,包括扩展名 .keystore 。将your_alias_name
替换为创建证书时为证书分配的别名。
您应该看到类似于以下内容的输出:
Alias name: <alias_name>
Creation date: Feb 02, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4cc9b300
Valid from: Mon Feb 02 08:01:04 UTC 2013 until: Mon Feb 02 18:05:04 PST 2033
Certificate fingerprints:
MD5: AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6B:AC:F9
SHA1: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:90:AF:A1:66:6E:44:5D:75
Signature algorithm name: SHA1withRSA
Version: 3
SHA1
开头的行包含证书的SHA-1指纹。指纹是由冒号分隔的20个两位数的十六进制数字的序列。
此证书将是您将包含在API key restriction中的GCP(Google云平台)控制台中的证书。
请注意,可以在上面提到的documentation中找到它。
答案 1 :(得分:0)
抱歉,我的答案格式不正确。请记住,目标不是调试或发布名称,而是通过使用私钥和公钥加密来增加安全性。
安全加密领域有很多格式,因此在这种情况下使用的格式来自OpenSSL和Java。
基本上,您使用包含证书和私钥/公钥的JKS Java密钥库对软件包进行签名。
要生成密钥,请遵循https://source.android.com/devices/tech/ota/sign_builds#certificates-keys
密钥将使用OpenSSL框架生成,私钥的格式为.pk8,公证书的格式为x509.pem。您将获得许多密钥:releasekey,shared,media和platform。名称并不重要。重要的是您为密钥生成的$subject
。
一旦有了基于android文档的密钥,就必须将其转换为PK12,这是JKS的兼容格式。
openssl pkcs12 -export -in platform.x509.pem -inkey /dev/stdin -name platform-debug -password pass:AStrongP4ssword -out tmp.p12
最后,您可以创建包含PK12格式的JKS。
keytool -genkey -keystore platform-debug.jks
# Import created JKS
keytool -importkeystore -deststorepass 'AStrongP4ssword' -srckeystore tmp.p12 -srcstoretype PKCS12 -srcstorepass 'AStrongP4ssword' -destkeystore release.jks -destkeypass 'AStrongP4ssword'