我一直在尝试使用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代码有任何问题,我会很感激.