配置Eclipse使用签名密钥库

49

我终于为我的应用程序创建了一个“最终”密钥库。由于我的应用程序正在使用 Google Maps,因此我认为必须更新所有布局以使用来自应用程序的新API密钥。

现在我完全意识到发布时需要导出已签名的APK,但是之后怎么做?我的想法是为了进一步开发和测试,最好能够配置Eclipse使用我的最终密钥库而不是调试密钥库...但我找不到方法如何实现?它只允许我配置“替代”调试密钥,但我认为那不一样。

如果我混淆或者误解了什么,请不要介意。


3
提供参考信息,如果您需要使用发布密钥进行调试,请在AndroidManifest.xml中的<application>标签中添加android:debuggable="true",然后导出已签名的APK文件。在设备上运行应用程序,您应该能够附加到进程并触发断点。 - Sam Dozor
7个回答

71

您可以通过进入偏好设置 -> Android -> 构建 并在“自定义调试密钥库”选项中输入文件名来配置用于调试构建(即当您单击“运行...”时发生的构建)的自定义密钥库。

然而,它有一个注意事项,即必须遵循传统调试密钥库的相同规则,主要包括:

  1. 密钥库密码必须为“android”
  2. 它必须包含名为“androiddebugkey”的密钥
  3. 该密钥的密码必须为“android”

因此,虽然可以使用与导出应用程序相同的密钥库对应用程序进行调试签名,但这要求您的生产密钥库看起来像是调试密钥库,如果有人获得了该文件,则会更不安全(容易检查并猜测密码)。

希望这能帮到您。


谢谢澄清!这意味着如果我只使用我的最终密钥来创建发布APK包,那么在创建APK包之前,我必须适应所有的Google Maps API密钥,是这样吗? - richey
顺便提一下,可以通过点击“窗口”下拉框,然后选择“首选项”来找到偏好设置。 - Hevski
1
似乎还有一个警告,即此偏好设置是 Eclipse 中所有项目的全局设置。因此,在调试其他项目时,它们也将使用此新的调试密钥,这可能会产生误导(使用相同密钥签名的应用程序可以更轻松地彼此通信)。在 Android Studio 中,调试密钥似乎可以按项目设置。 - ADTC

62

我能够使用我的Google Play发布密钥作为自定义调试密钥来帮助调试应用内购买功能。同样的方法无疑也适用于调试Google Maps相关的内容。

正如Devunwired提到的那样,这种方法存在注意事项。但是我的解决方案是:

  1. 将您的发布密钥复制到某个位置。
  2. 按照此处的说明更改密钥库密码/密钥密码和密钥别名(同时根据Devunwired的建议使其看起来像调试密钥)。
  3. 更改Eclipse的首选项 > Android > Build > 自定义密钥库设置为第1步中制作的副本的路径。
  4. 完成!

1
工作得很好。我遇到的唯一问题是因为我的应用程序分成两个部分(库和特定于环境的应用程序)。在清理了这两个部分进行重建之前,我一直收到java.lang.NoClassDefFoundError异常。 - Nicholas Harlen
这个回答提供的链接正是我需要的,让我能够在调试版本中实现应用内购买。谢谢! - Daniel Wood

4
为了在部署时Eclipse可以自动为您签名,您需要设置一个类似于调试密钥库的密钥库。这意味着必须有一个“androiddebugkey”,并且密钥和密钥库密码都必须是“android”。因此,我建议您执行以下操作:
  1. 复制您的密钥库,我将我的复制到名为iap.keystore的文件中
  2. 打开带有keytool的终端/命令窗口,在路径上(对我来说,路径是D:\ NVPACK \ jdk1.6.0_45 \ bin \ keytool.exe),或者使用下面命令中的keystore的完整路径
  3. 将您的密钥库密码更改为“android”:
    • keytool -storepasswd -keystore iap.keystore
    • 按提示输入旧密钥库密码
    • 按提示输入新密码android
    • 按提示确认android作为密码
  4. 将您的密钥重命名为androiddebugkey用当前密钥名称替换下一个命令中的Old_Key_Store_Name
    • keytool -changealias -keystore iap.keystore -alias Old_Key_Store_Name -destalias androiddebugkey
    • 按提示输入您的密钥库密码(现在是andorid
    • 按提示输入您的Old_Key_Store_Name密码(这是您之前设置密钥密码的任何内容)
  5. 更改androiddebugkey的密码
    • keytool -keypasswd -keystore iap.keystore -alias androiddebugkey
    • 按提示输入您的密钥库密码(现在是andorid
    • 按提示输入您的androiddebugkey密码(这是您之前设置密钥密码的任何内容)
    • 按提示输入新的密钥密码android
    • 按提示确认android作为密码
  6. 现在您拥有一个密钥库(带有密钥),Eclipse可以使用它来自动签名构建程序。
  7. 加载Eclipse。
  8. 窗口->首选项->Android->构建
  9. 跟随“自定义调试密钥库”浏览到我们之前创建的iap.keystore文件
  10. 确定
现在,当您启动/调试项目时,它将使用我们刚刚设置的密钥库来签名您的项目。这将允许IAP等功能正常工作。

注意:这种方法很方便,但是如果有人得到了你的iap.keystore文件并使用“android”作为密钥库/密钥密码,他们将能够以你的名义签署东西。希望从上面列出的步骤中显而易见,但请花一点时间欣赏一下这对你(或你的公司)意味着什么。然后根据此决定风险是否可接受,以及是否需要采取任何额外措施来确保此文件的安全性。


3
我们可以为我们的调试构建设置自定义密钥库。在Eclipse中,进入"Preferences -> Android -> Build",并在"Custom debug keystore"中输入文件名。
创建Eclipse客户端密钥库时需要注意以下重要事项:
密钥库密码必须为"android" 它必须包含一个名为"androiddebugkey"的密钥 该密钥的密码必须为"android" 因此,虽然可以使用与导出应用程序相同密钥库签署调试版本,但这要求生产密钥库看起来像一个调试密钥库,如果有人掌握了该文件,就会降低安全性(因为更容易检查和猜测密码)。
如果要更改密钥库密码,请执行以下操作:$ keytool -storepasswd -keystore my.keystore 如果要更改密钥库别名密码,请执行以下操作:$ keytool -keypasswd -keystore my.keystore -alias my_name 如果要更改密钥库别名,请执行以下操作:$ keytool -changealias -keystore my.keystore -alias my_name -destalias my_new_name Vkj enter image description here

0

0
您可以在Google开发者控制台(console.developers.google.com)中输入您的调试和发布SHA1,以便使用同一个Google API密钥。
这样,您将拥有相同的API密钥,不再需要在AndroidManifest.xml中更改它。

0
我们在办公室曾经遇到过同样的问题。由于我们经常需要这样做,所以我们编写了一个简单的脚本,使得将发布密钥库转换为调试密钥库变得容易。
该脚本可在https://github.com/IntellexApps/key2debug上找到。
我们现在已经使用它一段时间了,应该非常稳定。
干杯!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接