Android GoogleAPI调试和发布密钥之间的差异
我想这个问题已经回答了很多,但我找不到任何可以理解的答案 我目前正在开发一款使用谷歌地图API的Android应用程序。我设法让它工作了一段时间,但我从未真正理解如何正确使用Android GoogleAPI调试和发布密钥之间的差异,android,google-maps,google-api,google-maps-android-api-2,Android,Google Maps,Google Api,Google Maps Android Api 2,我想这个问题已经回答了很多,但我找不到任何可以理解的答案 我目前正在开发一款使用谷歌地图API的Android应用程序。我设法让它工作了一段时间,但我从未真正理解如何正确使用Debug和Release键 我不知道如何通过Android Studio获得我的应用程序的SHA-1调试和发布证书 在Playstore控制台上,我可以获得SHA-1发布证书(见下图),但在商店上发布我的应用程序之前,我不知道如何获得它。这是一个问题,因为当我第一次需要发布我的应用程序时,我没有这个证书,地图无法工作。我必
Debug
和Release
键
我不知道如何通过Android Studio获得我的应用程序的SHA-1调试和发布证书
在Playstore控制台上,我可以获得SHA-1发布证书(见下图),但在商店上发布我的应用程序之前,我不知道如何获得它。这是一个问题,因为当我第一次需要发布我的应用程序时,我没有这个证书,地图无法工作。我必须发布带有损坏地图的应用程序,然后通过Play Store控制台检索SHA-1证书
此外,我不知道如何在我的Android Studio项目中添加调试和发布密钥。在Android
视图的res
文件夹中,我有一个带有调试标签的google\u maps\u api.xml
(见下图)。但我如何才能添加一个用于发布?是同一把钥匙吗?在这种情况下,为什么这里有调试标记
谢谢你给我的任何提示和解释 基于
调试证书:执行调试生成时,Android SDK工具会自动生成此证书。只使用这个
您正在测试的应用的证书。不要试图发布
使用调试证书签名的应用程序。调试证书
将在中进行更详细的描述
在Android开发者文档中
发布证书:在执行发布构建时,Android SDK工具会生成此证书。您还可以生成
使用keytool程序的证书。当您需要时,请使用此证书
已准备好向世界发布您的应用程序
现在,要获取发布证书,请执行以下步骤:
keytool -list -keystore your_keystore_name
您的_keystore_name
替换为密钥库的完全限定路径和名称,包括.keystore扩展名。系统将提示您输入密钥库的密码。然后keytool显示密钥库中的所有别名
keytool -list -v -keystore your_keystore_name -alias your_alias_name
您的_keystore_name
替换为密钥库的完全限定路径和名称,包括.keystore扩展名。将您的\u别名\u名称
替换为创建证书时分配给证书的别名
您应该看到与此类似的输出:
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
别名:在您的GCP(谷歌云平台)控制台中
请注意,这可以在上面提到的内容中找到。对不起,我的答案格式不正确。记住,目标不是名称调试或发布,而是通过使用私钥和公钥加密来添加一层安全性
在安全加密领域中有许多格式,因此在此上下文中使用的格式来自OpenSSL和Java
基本上,您使用包含证书和私钥/公钥的JKS java密钥存储对包进行签名
要生成关键点,请执行以下操作
密钥将使用OpenSSL框架生成,并且将以.pk8格式表示私钥,x509.pem格式表示公共证书。您将获得一系列密钥:releasekey、shared、media和platform。名字其实并不重要。重要的是为密钥生成的$subject
一旦你有了基于android文档的密钥,你必须将它们转换成PK12,PK12是JKS的兼容格式。
openssl pkcs12-export-in-platform.x509.pem-inkey/dev/stdin-name平台调试-密码传递: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'
谢谢你的解释。我已经知道其中一些了。但是,我不知道如何生成发布证书或密钥库文件?此外,我相信我的密钥库文件中的SHA-1与Google PlayStore中的不同。。。为什么呢?最后,在GCP中,我是否必须添加调试SHA-1才能使用GMap?我想我必须这么做。通过阅读文档,我的密钥库中的SHA-1似乎被称为上传密钥
,而playStore上的SHA-1则被称为应用程序签名密钥
,这是谷歌自己为签署我的应用程序而生成的。我说得对吗?这可以解释为什么我在playstore上有两个SHA-1证书(上传和签名证书)?但在这种情况下,我需要在GCP中添加哪一个?