【问题标题】:Re-sign an Android Apk重新签署 Android Apk
【发布时间】:2011-08-19 09:49:40
【问题描述】:

如何重新签署安卓 apk。我参考了这个答案Can I re-sign an .apk with a different certificate than what it came with?

但遇到了 Android Manifest.xml 缺失错误。

【问题讨论】:

  • 在哪一步?另外,您确定清单仍在 apk 中吗?
  • 听起来您从 APK 文件的根目录中删除了 AndroidManifest.xml,而不仅仅是 META-INF 。就像原来的问题说的那样。
  • 详细流程:1.将apk转换为zip格式。 2.Removed all files from META-INF,remaining files(lib,res,AndroidManifest,classes.dex,resources.arsc) 3.zipped the file back to .apk 4.Used jarsigner to sign the apk (output added: META- INF/MANIFEST.MF 添加:META-INF/ANDDEV_K.SF.......) 5.尝试在模拟器上安装 apk 然后我得到(Android manifest.xml 在 apk 中丢失)
  • 你也可以试试这个stackoverflow.com/a/15786087/700869

标签: android android-emulator certificate apk


【解决方案1】:

朋友们,我找到了解决此问题的方法。使用 android 默认 debug.keystore 退出 Android Apk。

  1. **在 winzip 浏览器中打开 apk,而不是解压到文件夹。

  2. 删除META-INF文件夹。不需要再次压缩。**

  3. Jarsigner -verbose -keystore debug.keystore yourapk.apk aliasname

    **Example** `-Jarsigner –verbose –keystore debug.keystore androiddebugkey.`
    
  4. jarsigner -verify yourapk.apk

  5. zipalign -v 4 yourapk.apk signedapk.apk

第 1 步和第 2 步是我做错的地方,这给了我 androidmanifest xml 丢失错误。

【讨论】:

  • 在第 3 步之后,我收到一条消息“jar 已验证”。和警告:此 jar 包含未验证证书链的条目。我该如何克服这个警告???
  • jarsinger 争论自签名证书。如果您使用从 Verisign、GoDaddy 或任何其他 CA 收到的证书,则可以避免此警告。
  • 别名androiddebugkey的默认密码是“android”
  • 你应该使用 zipalign 工具
【解决方案2】:

降级到 JDK 1.6.0_43 解决了这个问题。

要使用 JDK 1.7 签署 apk,必须使用这些关键字“-sigalg MD5withRSA -digestalg SHA1”

原因: 从 JDK 7 开始,默认的签名算法发生了变化,要求您在签名 APK 时指定签名和摘要算法(-sigalg 和 -digestalg)。

命令: jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] 别名名称

【讨论】:

  • 既然可以使用jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name,为什么要降级?
  • 仅供参考,md5 已被 Oracle 完全淘汰,不再支持 blogs.oracle.com/java-platform-group/…
猜你喜欢
  • 2011-11-23
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
相关资源
最近更新 更多