Google API 调试键和发布键之间的区别
Difference between Google API Debug and Release keys
我想这个问题已经回答了很多,但我找不到任何可以理解的答案。
我目前正在开发一个使用 Google 地图 API 的 Android 应用程序。我设法让它工作了一段时间,但我从未真正理解如何正确使用 Debug
和 Release
键。
我不知道如何通过 Android Studio 为我的应用获取 SHA-1 调试和发布证书。
在 Playstore 控制台上,我可以获得 SHA-1 发布证书(见下图),但我不知道如何在商店发布我的应用程序之前获取它。这是一个问题,因为当我第一次需要发布我的应用程序时,我没有这个证书,地图也无法工作。我必须使用损坏的地图发布我的应用程序,然后通过 Play 商店控制台检索 SHA-1 证书。
此外,我不知道如何在我的 Android Studio 项目中添加调试和发布密钥。在 Android
视图中,在 res
文件夹中,我有一个带有调试标签的 google_maps_api.xml
(见下图)。但是我怎样才能添加一个发布?是同一个键吗?在那种情况下,为什么这里有一个调试标签?
感谢您给我的任何提示和解释!
基于 Google Maps Places SDK for Android Documentation
A debug certificate: The Android SDK tools generate this certificate automatically when you do a debug build. Only use this
certificate with apps that you're testing. Do not attempt to publish
an app that's signed with a debug certificate. The debug certificate
is described in more detail in Signing in Debug
Mode
in the Android Developer Documentation.
A release certificate:The Android SDK tools generate this certificate when you do a release build. You can also generate this
certificate using the keytool program. Use this certificate when you
are ready to release your app to the world.
现在要获取您的发布证书,请按照以下步骤操作:
找到您的发行证书密钥库文件。发布密钥库没有默认位置或名称。如果您在构建要发布的应用程序时未指定一个,则该构建将使您的 .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位十六进制数组成的序列。
此证书将是您将包含在 GCP(Google 云平台)控制台的 API key restriction 中的证书。
另请注意,这可以在上面提到的 documentation 中找到。
抱歉,我的回答格式不正确。请记住,目标不是名称 debug 或 release,而是通过使用私钥和 public 密钥进行加密来添加一层安全性。
安全加密世界中有许多格式,因此在本文中使用的格式来自 OpenSSL 和 Java。
基本上,您使用包含证书和 private/public 密钥的 JKS java 密钥库对包进行签名。
要生成密钥,请遵循 https://source.android.com/devices/tech/ota/sign_builds#certificates-keys
密钥将使用 OpenSSL 框架生成,私钥格式为 .pk8,public 证书格式为 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'
我想这个问题已经回答了很多,但我找不到任何可以理解的答案。
我目前正在开发一个使用 Google 地图 API 的 Android 应用程序。我设法让它工作了一段时间,但我从未真正理解如何正确使用 Debug
和 Release
键。
我不知道如何通过 Android Studio 为我的应用获取 SHA-1 调试和发布证书。
在 Playstore 控制台上,我可以获得 SHA-1 发布证书(见下图),但我不知道如何在商店发布我的应用程序之前获取它。这是一个问题,因为当我第一次需要发布我的应用程序时,我没有这个证书,地图也无法工作。我必须使用损坏的地图发布我的应用程序,然后通过 Play 商店控制台检索 SHA-1 证书。
此外,我不知道如何在我的 Android Studio 项目中添加调试和发布密钥。在 Android
视图中,在 res
文件夹中,我有一个带有调试标签的 google_maps_api.xml
(见下图)。但是我怎样才能添加一个发布?是同一个键吗?在那种情况下,为什么这里有一个调试标签?
感谢您给我的任何提示和解释!
基于 Google Maps Places SDK for Android Documentation
A debug certificate: The Android SDK tools generate this certificate automatically when you do a debug build. Only use this certificate with apps that you're testing. Do not attempt to publish an app that's signed with a debug certificate. The debug certificate is described in more detail in Signing in Debug Mode in the Android Developer Documentation.
A release certificate:The Android SDK tools generate this certificate when you do a release build. You can also generate this certificate using the keytool program. Use this certificate when you are ready to release your app to the world.
现在要获取您的发布证书,请按照以下步骤操作:
找到您的发行证书密钥库文件。发布密钥库没有默认位置或名称。如果您在构建要发布的应用程序时未指定一个,则该构建将使您的 .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位十六进制数组成的序列。
此证书将是您将包含在 GCP(Google 云平台)控制台的 API key restriction 中的证书。
另请注意,这可以在上面提到的 documentation 中找到。
抱歉,我的回答格式不正确。请记住,目标不是名称 debug 或 release,而是通过使用私钥和 public 密钥进行加密来添加一层安全性。
安全加密世界中有许多格式,因此在本文中使用的格式来自 OpenSSL 和 Java。
基本上,您使用包含证书和 private/public 密钥的 JKS java 密钥库对包进行签名。
要生成密钥,请遵循 https://source.android.com/devices/tech/ota/sign_builds#certificates-keys
密钥将使用 OpenSSL 框架生成,私钥格式为 .pk8,public 证书格式为 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'