J W*_*ong 19 android jar-signing apk
我一直在尝试使用jarsigner.exe和adb.exe手动签署一个android包并将其安装在API V8模拟器上.我创建了一个简单的HelloAndroid项目,它将使用位于用户的.android目录中的debug.keystore生成一个签名的HelloAndroid.apk.从Eclipse启动时,它在模拟器上构建并安装apk而没有任何问题.
我使用android工具将未签名的应用程序包导出到单独的目录中.我签名并zipAligned包并使用adb安装它但收到错误:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Run Code Online (Sandbox Code Playgroud)
我使用以下命令对其进行签名.
jarsigner -verbose -keystore c:\users\jhwong\.android\debug.keystore
-storepass android -keypass android -digestalg SHA-1 -sigalg SHA1withRSA
-sigfile CERT -signedjar temp\HelloWorld2.apk
temp\HelloWorld.unsigned.apk androiddebugkey
adding: META-INF/MANIFEST.MF
adding: META-INF/CERT.SF
adding: META-INF/CERT.RSA
signing: res/layout/main.xml
signing: AndroidManifest.xml
signing: resources.arsc
signing: res/drawable-hdpi/icon.png
signing: res/drawable-ldpi/icon.png
signing: res/drawable-mdpi/icon.png
signing: classes.dex
Run Code Online (Sandbox Code Playgroud)
这没有给我任何错误,只是为了确保我跑:
jarsigner -verify -verbose temp\HelloWorld2.apk
Run Code Online (Sandbox Code Playgroud)
它显示jar已经过验证,每个文件都已签名并且是清单的一部分.
我跑完zipalign -v 4 temp\HelloWorld2.apk temp\HelloWorld3.apk了没有错误.然后使用adb install -r temp\HelloWorld3.apk.
我已经看到几个相关的线程和文章提出了这些方向,但我很困惑为什么它不能手动使用Eclipse来构建签名包.我甚至采用了从Eclipse构建的软件包,并且能够使用adb.exe来安装它,所以我缩小了它以签署软件包.我已经尝试过使用keytool生成的密钥库,但是它们运行不正常,这就是我尝试使用debug.keystore的原因.
如果他们发现我的jarsigner代码有任何问题,我会很感激.
mat*_*ash 37
我们遇到了同样的问题.尝试使用以下参数值:
jarsigner ... -digestalg SHA1 -sigalg MD5withRSA ...
Run Code Online (Sandbox Code Playgroud)
顺便说一句,使用显式sigalg和digestalg似乎是JDK 7必需的.
要使用JDK 1.7签署apks,必须使用这些关键字 "-sigalg MD5withRSA -digestalg SHA1 "
原因:从JDK 7开始,默认签名算法已更改,要求您在签署APK时指定签名和摘要算法(-sigalg和-digestalg).
命令:
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile]
[originalapk] alias_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17516 次 |
| 最近记录: |