我一直试图使用jarsigner.exe和adb.exe手动签署一个android包并将其安装在API V8仿真器上。我创建了一个简单的HelloAndroid项目,它将使用位于用户的.android目录下的debug.keystore生成签名的HelloAndroid.apk。从Eclipse启动时,它会在模拟器上构建并安装apk,而不会出现问题。试图用jarsigner.exe手动签署android包并使用adb.exe安装
我使用android工具将未签名的应用程序包导出到单独的目录。我签署并zipAligned的包,并使用adb来安装它,但收到错误:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
我用下面的命令来签署它。
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
这并没有给我任何错误,只是为了确保我跑:
jarsigner -verify -verbose temp\HelloWorld2.apk
结果表明罐子进行了检查,每个文件签署和清单的一部分。
我跑了zipalign -v 4 temp\HelloWorld2.apk temp\HelloWorld3.apk
,没有发生错误。 然后使用adb install -r temp\HelloWorld3.apk
。
我见过几个相关的线程和文章,提示这些方向,但我很困惑,为什么它不能手动使用Eclipse来构建签名包。我甚至采用了Eclipse构建的软件包,并且能够使用adb.exe来安装它,所以我缩小了它的范围来签署软件包。我已经尝试了从keytool生成的密钥库,但它们并没有工作,这也是我尝试debug.keystore的原因。
我会很感激任何意见,如果他们发现我的jarsigner代码有任何问题。
你救了我的一天!我无法在任何地方找到这些信息! – POMATu 2012-11-14 12:43:27
这为我节省了一个伤害的世界。 – Tom 2012-11-22 05:56:18
耶!终于找到了这个。非常感谢! – bk138 2013-02-19 19:18:49