如何使用jarsigner为apk签名?

23

我对编程知识了解很少。我能够通过命令提示符打开jar signer,然后我会得到各种jar signer选项,但我不知道如何使用它们。有人可以解释一下我应该在命令提示符中输入什么以签署该应用程序吗?

3个回答

43

您可以在 d.android.com 上找到有关此主题的所有信息:http://developer.android.com/tools/publishing/app-signing.html#signapp

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore
my_application.apk alias_name

其中有一件事情让我花费了几个小时的时间,但它也在官方文档中提到:

从JDK 7开始,默认的签名算法已更改,当您签名一个APK时需要指定签名和摘要算法(-sigalg和-digestalg)


我应该把我的密钥库和APK文件放在哪里? - user3143901
1
我已经尝试了以下的代码:c\programfiles\java\jdk1.7.0_45\bin\jarsigner-verbose-sigalg SHA1withRSA-digestalg SHA1-keystore<xxxxx.keystore> myapp.apk - user3143901
可能是因为你发布的命令缺少了很多空格和其他有用的符号。尝试类似这样的格式:C:\Program Files\java\jdk1.7.0_45\bin\jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <xxxxx.keystore> myapp.apk <alias_name> - TomTasche
我应该把密钥库和APK文件放在Java文件夹里吗? - user3143901
1
请仔细阅读整个指南:http://developer.android.com/tools/publishing/app-signing.html#signapp或者,您可以直接使用Eclipse签署您的应用程序。 - TomTasche
显示剩余4条评论

15

请按以下方式使用jarsigner:

jarsigner -keystore <keystore_file> -storepass <storepassword> <filenameTosigned> <alias>

Rahul兄弟...我已经尝试了以下内容 c\programfiles\java\jdk1.7.0_45\bin\jarsigner-verbose-sigalg SHA1withRSA-digestalg SHA1-keystore<xxxxx.keystore> myapp.apk - user3143901
我应该把密钥库和 APK 文件放在哪里? - user3143901
尝试了这个。但是也收到了一个警告,警告: 未提供 -tsa 或 -tsacert,并且此 jar 未加时间戳。没有时间戳,用户可能无法在签名证书过期日期(2042-07-31)或任何未来吊销日期之后验证此 jar。 - jrh
1
你可以忽略那个警告。 - Ahmed Faisal

4

对于-tsa选项,请输入以下内容:

jarsigner -verbose **-tsa http://timestamp.comodoca.com/rfc3161** -sigalg SHA1withRSA -digestalg SHA1 -keystore your_keystor_name.keystore YourAPK.apk youralias_key

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