我正在尝试按照本指南签署 apk。
我在 C:\Users\Family\workspace\ 中创建了一个 keytools 文件夹,并在新创建的 keytools 文件夹中创建了一个 keys 文件夹。所以现在我有 C:\Users\Family\workspace\keytools 和 C:\Users\Family\workspace\keytools\keys 文件夹。
我将 debug.keystore 复制到 keys 文件夹中,并将 keytool.exe 和 jli.dll 复制到 keytools 文件夹中。
我运行 cmd.exe 并导航到 C:\Users\Family\workspace\keytools 并运行
keytool -genkey -alias anddev.keystore -keyalg RSA -validity 20000 -keystore keys/anddev.keystore
anddev.keystore 文件在 keys 文件夹中创建。
我将要登录的 apk 复制到 keytools 文件夹中。我还将 jarsigner.exe 复制到 keytools 文件夹中。
在 cmd.exe 我在 C:\Users\Family\workspace\keytools 并试图运行:
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 并运行该代码时,它会询问密钥库密码,当我编写密钥库通行证 (123456) 时,它给了我一个错误:
jarsigner:找不到证书链:c:\users\family\workspace\keytools\keys\anddev.keystore。c:\users\family\workspace\keytools\keys\anddev.keystore 必须引用包含私钥和相应密钥证书链的有效 Keystore 密钥条目。
当我写 anddev.keystore pass (= asdfgh,keytool 在进程结束时要求的第二个 pass)我得到这个错误: jarsigner error: java.lang.RuntimeException: keystore load: Keystore was tampered with, or password was不正确。(但是,我很确定这是正确的错误,因为通行证不是这个,而是 123456)。
我很确定我越来越近了,证书链错误就是问题所在。对?我错过了一步还是什么?
另一件事:在命令行中,当 keytool 要求输入任何密码时,光标没有移动。我写了密码,但没有看到任何数字或星号,也没有看到光标移动。然后它要求重新输入密码,同样的事情发生了。我想这没问题,并且是命令行的一个功能,我只是为了确定而写这个。
编辑:
在 Hades 和 Saasha 的帮助下,签署 apk 非常容易。对于任何对此感兴趣的人,我的步骤是:为此,我在 C:\Users\Family\workspace 中创建了一个 MyKeys 文件夹。在该过程之后,sample.keystore 和 samplesigned.apk 出现在该文件夹中。