apk重新签名

对apk进行重新签名中遇到的问题记录如下

今天使用我周六写的工具对apk进行签名时,报了如下错误

jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 716812 but got 722173 bytes)

经查后发现,是由于apk中包含有签名信息,所以不能进行签名。但在上周开发完工具后,测试未发现该问题。和同事讨论后,得出如下结果:

  1. 如果是debug生成的包,可以直接进行二次签名。我当时测试通过就是该种情况,使用的是debug apk。
  2. 对已经进行过签名的包,需要删除签名文件,再进行签名。在这里需要注意的是,解压apk后,删除META-INF后,再压缩为apk包,进行签名,出现了如下错误

正在添加: META-INF/MANIFEST.MF jarsigner 错误: java.lang.NullPointerException

上面解决的方法为,我使用了好压软件,打开右键打开,选择删除。


image.png

此时可以正常对删除了签名文件后的包进行重新签名。

思考的问题:为什么同样是签名后的debug版本的apk可以进行重新签名,而签名过的apk不能直接进行重新起签名?

推荐阅读更多精彩内容

  • 引用http://jingyan.baidu.com/article/bad08e1ee438e109c85121...
    Charon_Pluto阅读 24,798评论 4 16
  •   Android系统由于其开源的属性,市场上针对开源代码定制的ROM参差不齐,在系统层面的安全防范和易损性都不一...
    白帽札记阅读 7,262评论 0 23
  • 在上传各大安卓应用市场的时候, 没有加固的apk是不允许提交的,他们会帮我们加固好apk,但是加固完之后的apk是...
    Michael1阅读 1,778评论 0 0
  • 一、前言 Android 签名。 在说道Android签名之前,我们需要了解的几个知识点 1、数据摘要(数据指纹)...
    福later阅读 16,882评论 0 12
  • 转载请注明出处:https://www.jianshu.com/p/308515c94dc6github:http...
    rushjs阅读 12,741评论 4 36