49

我终于为我的应用程序创建了一个“最终”密钥库。由于我的应用正在使用谷歌地图,我认为我必须更新所有布局以使用该应用产生的新 API 密钥。

现在我完全了解导出已签名 APK 以供发布的要求,但之后呢?我的想法是,对于进一步的开发和测试,如果我可以将 Eclipse 配置为使用我的最终密钥库而不是调试密钥库,那将是最简单的……但我发现没有办法做到这一点?它只允许我配置一个“替代”调试密钥,但我想这不一样​​。

对不起,如果我在这里完全误解了某些东西,我太困惑了。

4

7 回答 7

71

您可以通过转到 Preferences -> Android -> Build 并在“Custom debug keystore”选项中输入文件名,在 Eclipse 中配置自定义密钥库以用于调试构建(单击运行时发生的构建...) .

但是,需要注意的是,它必须遵循与传统调试密钥库相同的规则,主要是:

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

因此,虽然可以使用与导出相同的密钥库在调试中签署您的应用程序,但它要求您的生产密钥库看起来像一个调试存储,这使得如果有人在文件中持有它会降低安全性(这会更容易检查和猜测密码)。

高温高压

于 2012-06-04T19:18:57.433 回答
62

我能够使用我的 Google Play 发布密钥库作为我的自定义调试密钥库来帮助调试应用内购买功能。毫无疑问,这同样适用于调试谷歌地图的东西。

正如Devunwired 提到的,有一些警告。但我的解决方案是这样的:

  1. 将您的发布密钥复制到某处。
  2. 按照此处的说明更改密钥库密码/密钥密码和密钥别名(另外,按照 Devunwired 的建议使其看起来像调试密钥库)。
  3. 将 Eclipse 的 Preferences > Android > Build > Custom keystore 设置更改为在步骤 1 中创建的副本的路径。
  4. 完毕!
于 2012-12-24T07:39:24.497 回答
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”作为密钥库/密钥密码来以您的身份进行签名。希望这显然来自上面列出的步骤,但请花点时间了解这对您自己(或您的公司)意味着什么。然后根据此决定风险是否可以接受,以及是否需要执行任何额外措施以确保此文件的安全性。

于 2015-02-19T10:09:11.740 回答
3

我们设置自定义密钥库以用于我们的调试构建。Eclipse 转到 Preferences -> Android -> Build 并在“自定义调试密钥库”中输入文件名。

当我们为 Eclipse 海关创建密钥库时很重要:

密钥库密码必须是“android” 它必须包含一个名为“androiddebugkey”的密钥 该密钥的密码必须是“android” 因此,虽然可以使用与导出相同的密钥库在调试中签署您的应用程序,但它需要您的生产keystore 看起来像一个调试存储,如果有人得到文件,这会降低安全性(检查和猜测密码会更容易)。

如果我们想更改密钥库密码: $ 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 在此处输入图像描述

于 2014-04-21T07:15:56.553 回答
0

前段时间我们办公室也有同样的问题。由于我们经常需要这个,所以我们编写了一个简单的脚本来轻松将发布密钥库转换为调试密钥库。

该脚本可在https://github.com/IntellexApps/key2debug上找到

我们现在使用它有一段时间了,所以应该很稳定。

干杯!

于 2015-02-11T23:39:55.833 回答
0

这里有在调试密钥库中转换常规密钥库的说明: https ://stackoverflow.com/a/15754187/917362

于 2014-04-16T07:31:29.490 回答
0

您可以使用 Google Developers Console (console.developers.google.com) 为同一个 Google API 密钥输入调试和发布 SHA1。

这样,您将拥有相同的 API 密钥,并且不再需要在 AndroidManifest.xml 中更改它。

于 2014-06-04T15:17:50.893 回答