我正在尝试按照 this 指南签署 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 并运行该代码时,它要求输入 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:

  • 在 Package Explorer 中选择项目,然后选择 File > Export。
  • 打开Android文件夹,选择Export Android Application,点击Next。导出 Android 应用程序向导现在启动,它将引导您完成应用程序签名过程,包括选择用于签名 .apk 的私钥(或创建新的 keystore 和私钥)的步骤。
  • 完成导出向导,您的应用程序将被编译、签名、对齐并准备好分发。
  • 关于安卓签名问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6198917/

    10-14 11:28