在 Android 中发布和调试应用程序版本。两个证书

Posted

技术标签:

【中文标题】在 Android 中发布和调试应用程序版本。两个证书【英文标题】:Release and debug version of the application in Android. Two certificates 【发布时间】:2013-12-05 10:14:18 【问题描述】:

我已经创建了应用程序的发布(导出)版本。这造成了调试版本使用调试证书进行签名和导出版本使用不同证书的问题。

是否可能它们都使用相同的发行版本证书?

如果是,那么是否可以保存证书密码,这样我每次导出(或编译)应用程序时都不必输入它?

如果不建议或不可能这样做,那么每次您想将发布应用程序安装到已安装调试应用程序的设备时,您如何处理 android 大喊失败 [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]?

李>

您如何处理 Android Google Maps API V2 无法使用调试证书,因为 AndroidManifest.xml 具有仅适用于使用发布证书签名的应用程序的密钥?

【问题讨论】:

【参考方案1】:

您可以使用 gradle 或 ant 自动化构建过程。一旦你这样做了,就更容易构建签名的 apk。使用最新的 Android Studio,您可以一次创建同一构建的多个版本。

此question and its answers 将帮助您解决此问题。

【讨论】:

【参考方案2】:

回答。

    如果应用程序使用相同的证书签名,则不会导致任何问题,并且基本上永远不会有两个版本的相同证书。其次,是的,默认情况下 sdk 使用调试证书对您的应用程序进行签名,并在发布时由您选择要签名的证书。

    您可以使用预定义的命令创建一个批处理文件来为您的应用程序签名,您需要做的就是 一种。发布您的原始应用程序,无需签名 湾。使用 Jarsigner 和您的自定义证书对其进行签名 C。使用 Zipaligner 对其进行优化,您可以轻松地将这个命令放入批处理文件中(在 windows 中)

    当已安装相同的应用程序带有不同证书的签名然后您尝试再次推送时,会出现此错误,因此您要么手动删除预安装的应用程序并安装新应用程序,要么使用相同的新应用程序将证书推送到设备中。

    您可以很好地将 Google Maps APIv2 与调试密钥集成,您需要做的就是使用调试密钥的哈希并在您的应用中使用生成的密钥向 Google 注册您的应用。

【讨论】:

1.我知道默认情况下它是如何工作的,但是如何更改默认值。 3.我知道为什么会报错,但是我问其他的怎么处理。 4. 我知道,但我想问的是如何根据应用证书类型使用不同的谷歌地图证书,或者如何始终使用一个发布证书。 对于错误问题,唯一的办法是手动卸载并安装新版本,没有其他办法,你永远不能自动化这个过程,让你的应用程序选择何时使用调试密钥,而不是,如果将字符串 xml 中的两个键都作为常量,并在适当的时间使用正确的键,那么您可以做的最理想的事情。 其他人在做什么?他们是始终使用发布证书,还是使用 2 个证书和批处理/脚本/ant 设置来使应用程序独立于使用的证书? 是的,如果您想通过 google play 路由您的应用程序,则必须使用发布证书,否则由您自己决定。默认情况下,除非您更改偏好,否则所有 sdk 都默认使用您的调试密钥。 这不是我问的:D 我问的是哪种方法在商业应用程序开发人员中更受欢迎。

以上是关于在 Android 中发布和调试应用程序版本。两个证书的主要内容,如果未能解决你的问题,请参考以下文章

如何在构建 Android 应用程序的发布版本之前删除所有调试日志记录调用?

ActionBar在发布版本中缺少后退箭头,但没有调试版本

如何在测试设备中同时维护调试和应用商店发布版本?

Android Studio 无法在我的设备上调试

即使在 debuggable=false 的发布 apk 中,应用程序也可以在 Android 模拟器中调试

vs中的程序有debug和release两个版本的区别