更改 Android 签名密钥密码

25

有人知道如何(以及是否能够)更改用于签署Android构建的密码吗?

我们有一个正在运行的应用程序,但希望更改签名密码。问题在于,我们不想强制用户重新安装该应用程序(如果我们使用新密钥,用户将无法将新版本安装为原始应用程序的更新)。

我已经查看了整个Android文档,但未能找到与此主题有关的任何内容(除了创建新密钥...)。

3个回答

36

实际上,这是可能的:

keytool -storepasswd -keystore my.keystore

3
虽然我不再需要这个修复,但我相信您对于许多开发者来说是一个英雄! :D - Thomas Vervest
@Thomas Vervest - 这 不是 你问题的答案。最多只能更改密码,该密码将用于从运行它的开发配置进行的后续编译。它对于解决现有安装在旧密钥下的问题没有任何帮助。 - Chris Stratton
请解释一下,更改密码是否会更改签名密钥(使其成为“新”密钥)? - Thomas Vervest
1
不,更改密码并不会生成新的密钥——它只是更改了访问密钥库中封装密钥的方式。 - DustinB

20

如果您有旧密码,可以更改key密码。需要运行以下命令:

keytool -keypasswd -alias "key_alias" -keypass "old_pass" -new "new_pass" -keystore "your_keystore_path"

3
这是不可能的。签名密钥用于确认您是原始作者而不是冒名顶替者。经常会出现“如何恢复丢失的密钥”这个问题,唯一的答案是使用新应用程序重新开始。
如果您仍然拥有原始签名密钥,您可以发布一个更新,该更新导出程序使用的用户数据,然后在新密钥下发布一个新应用程序,该应用程序可以导入数据,以便他们至少能够保留自己的数据。您在旧密钥下的迁移更新甚至可以使用意图将用户发送到新应用程序的市场下载页面。

我一直担心是这种情况……那好吧,我猜我们只能这样做。感谢你的回答和解决问题的建议。 - Thomas Vervest
3
@Chris 我不同意。私钥存储在一个名为"KeyStore"的加密文件中,用于签署APK的密码实际上不是私钥的密码:它只是解密该KeyStore文件的密码,以便您可以访问您的私钥。如果您知道此密码,就可以轻松访问您的私钥,并通过新的KeyStore密码保护它(请参阅基于 "keytool" 的其他答案)。更改密码不会生成新密钥。因此,应用程序和应用程序用户都是安全的。 - xav

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