我正在尝试按照 this 指南签署 apk。
keytool -genkey -alias anddev.keystore -keyalg RSA -validity 20000 -keystore keys/anddev.keystore
jarsigner -verbose -keystore C:\Users\Family\workspace\keytools\keys\anddev.keystore -signedjar sampleapp_signed.apk sampleapp.apk anddev.keystore
。它给了我这个错误:我也尝试运行:
jarsigner -verbose -keystore C:\Users\Family\workspace\keytools\keys\anddev.keystore -signedjar sampleapp_signed.apk sampleapp.apk C:\Users\Family\workspace\keytools\keys\anddev.keystore
我也试过运行:
jarsigner -verbose -keystore C:\Users\Family\workspace\keytools\keys\anddev.keystore -signedjar C:\Users\Family\workspace\keytools\sampleapp_signed.apk C:\Users\Family\workspace\keytools\sampleapp.apk C:\Users\Family\workspace\keytools\keys\anddev.keystore
当我导航到 c:\program files\java\jdk1.6.0_23\bin 并运行该代码时,它要求输入 keystore 密码,当我编写 keystore 通行证 (123456) 时,它给了我一个错误:
jarsigner:找不到证书链:c:\users\family\workspace\keytools\keys\anddev.keystore。 c:\users\family\workspace\keytools\keys\anddev.keystore 必须引用包含私钥和相应 key 证书链的有效 Keystore key 条目。
当我编写 anddev.keystore pass(=asdfgh,keytool 在过程结束时要求的第二遍)时,我收到此错误:
jarsigner 错误:java.lang.RuntimeException: keystore 加载: keystore 被篡改,或密码不正确。 (但是,我很确定这是正确的错误,因为通过的不是这个,而是 123456)。
我很确定我越来越近了,证书链错误就是问题所在。正确的?我错过了一步还是什么?
另一件事:在命令行中,当 keytool 要求输入任何密码时,光标没有移动。我写了密码,但我没有看到任何数字或星星,也没有看到光标移动。然后它要求重新输入密码,同样发生了。我想这没问题,而且是命令行的一个功能,我只是为了确定而写这个。
编辑:
在 Hades 和 Saasha 的帮助下,签署 apk 非常容易。对于任何对此感兴趣的人,这是我的步骤:
为此,我在 C:\Users\Family\workspace 中创建了一个 MyKeys 文件夹。在此过程之后,sample.keystore 和 samplesigned.apk 出现在该文件夹中。
最佳答案
你好
如果您使用 Eclipse,您可以尝试:
使用 Eclipse ADT 编译和签名
如果您使用带有 ADT 插件的 Eclipse,您可以使用导出向导导出已签名的 .apk(如果需要,甚至可以创建新的 keystore )。导出向导为您执行与 Keytool 和 Jarsigner 的所有交互,这允许您使用 GUI 对包进行签名,而不是执行手动程序来编译、签名和对齐,如上所述。一旦向导编译并签署了您的包,它还会使用 zipalign 执行包对齐。因为导出向导同时使用 Keytool 和 Jarsigner,所以您应该确保它们可以在您的计算机上访问,如上面签名的基本设置中所述。
要在 Eclipse 中创建签名和对齐的 .apk:
关于安卓签名问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6198917/