android - 尝试使用 jarsigner.exe 手动签署 android 包并使用 adb.exe 安装

标签 android apk jar-signing

我一直在尝试使用 jarsigner.exe 和 adb.exe 手动签署 android 包并将其安装在 API V8 模拟器上。我创建了一个简单的 HelloAndroid 项目,它会使用位于用户 .android 目录中的 debug.keystore 生成签名的 HelloAndroid.apk。从 Eclipse 启动时,它会毫无问题地在模拟器上构建和安装 apk。

我使用 android 工具将未签名的应用程序包导出到单独的目录。我对包进行了签名和压缩对齐,并使用 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

它显示 jar 已经过验证,每个文件都已签名,并且是 list 的一部分。

我运行了 zipalign -v 4 temp\HelloWorld2.apk temp\HelloWorld3.apk,它没有错误地完成。 然后使用 adb install -r temp\HelloWorld3.apk

我已经看到几个相关的线程和文章建议这些方向,但我很困惑为什么它不能手动工作而不是使用 Eclipse 来构建签名包。我什至采用了从 Eclipse 构建的包,并且能够使用 adb.exe 来安装它,所以我将其范围缩小到对包进行签名。我已经尝试过从 keytool 生成的 keystore ,但它们不能正常工作,这就是我尝试 debug.keystore 的原因。

如果他们发现我的 jarsigner 代码有任何问题,我将不胜感激。

最佳答案

我们遇到了同样的问题。尝试使用以下参数值:

jarsigner ... -digestalg SHA1 -sigalg MD5withRSA ...

顺便说一句,JDK 7 似乎强制使用显式 sigalg 和 digestalg。

关于android - 尝试使用 jarsigner.exe 手动签署 android 包并使用 adb.exe 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505240/

相关文章:

java - Firebase 连接检查 Android 中的在线离线状态

java - LibGDX 从核心模块 (MyGdxGame) 中的 android 模块 (AndroidLauncher) 获取变量?

java - 如何在java命令提示符下运行签名的jar文件?

java - 如果签名 jar 的证书(带有时间戳)过期会发生什么

java - android.widget.TableLayout 无法转换为 android.widget.TableRow

android - 使用 cursor.respond(Bundle) & cursor.getextras()

android - 调试 apk 工作正常但在签名并生成发布 apk 后,它在 cordova ionic 项目中显示白色空白屏幕

android - Ionic Android无法建立APK

java - 有没有办法让库知道使用它的应用程序的包名称?

java - Netbeans 中 WebStart 属性中的自签名复选框的含义是什么