Android GoogleAPI调试和发布密钥之间的差异

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发布证书(见下图),但在商店上发布我的应用程序之前,我不知道如何获得它。这是一个问题,因为当我第一次需要发布我的应用程序时,我没有这个证书,地图无法工作。我必

我想这个问题已经回答了很多,但我找不到任何可以理解的答案

我目前正在开发一款使用谷歌地图API的Android应用程序。我设法让它工作了一段时间,但我从未真正理解如何正确使用
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程序的证书。当您需要时,请使用此证书 已准备好向世界发布您的应用程序

现在,要获取发布证书,请执行以下步骤:

  • 找到您的发布证书密钥库文件。发布密钥库没有默认位置或名称。如果在生成要发布的应用程序时未指定一个,则生成将使您的.apk未签名,并且您必须先对其签名,然后才能发布它。对于发布证书,还需要证书的别名以及密钥库和证书的密码。通过输入以下内容,可以列出密钥库中所有密钥的别名:

    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中添加哪一个?