重新签名Android应用程序包

14

在哪个步骤?另外,你确定清单文件仍然在apk中吗? - njzk2
听起来你从APK文件的根目录中删除了AndroidManifest.xml,而不仅仅是META-INF。就像原始问题所说的那样。 - Blundell
详细流程:
  1. 将apk转换为zip文件形式。
  2. 从META-INF中删除所有文件,保留(lib、res、AndroidManifest、classes.dex、resources.arsc)文件。
  3. 将文件压缩回.apk格式。
  4. 使用jarsigner签署apk(输出添加:META-INF/MANIFEST.MF,添加:META-INF/ANDDEV_K.SF......)
  5. 尝试在模拟器上安装apk,然后我收到了“apk中缺少Android manifest.xml”的错误。
- neeraj
你也可以尝试这个:https://dev59.com/Qmgv5IYBdhLWcg3wBMIK#15786087 - Aksel Fatih
2个回答

27

各位朋友,我找到了一个解决办法。使用Android默认的debug.keystore重新签名APK。

  1. 在winzip浏览器中打开APK文件而不是将其解压到文件夹中。

  2. 删除 META-INF 文件夹。无需再次进行压缩。

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

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

  • zipalign -v 4 yourapk.apk signedapk.apk

  • 步骤1和2是我做错了的地方,导致出现了“androidmanifest xml丢失”的错误。


    在第三步之后,我收到了一条消息“jar verified.”和警告:此jar包含未经验证的证书链条的条目。我该如何解决这个警告? - EnthuDeveloper
    jarsigner 对自签名证书提出了质疑。如果您使用来自Verisign、GoDaddy或任何其他CA的证书,就可以避免这个警告。 - Andrey Starodubtsev
    别名androiddebugkey的默认密码是“android”。 - Nizam Mohideen
    你应该使用zipalign工具。 - Nick Turner

    5
    降级至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] alias_name

    为什么要降级,当你可以使用 jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name 呢? - Alex Martian
    FYI,MD5 已被 Oracle 完全淘汰,不再受支持。https://blogs.oracle.com/java-platform-group/oracle-jre-will-no-longer-trust-md5-signed-code-by-default - Gi0rgi0s

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接