sisong / ApkDiffPatch

a C++ library and command-line tools for Zip(Jar,Apk) file Diff & Patch; create minimal delta/differential; support Jar sign(apk v1 sign) & apk v2,v3 sign .

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

不需要ApkV2签名,但也要求patch结果二进制始终一致;也可以这样用(Released newZip :=ApkNormalized(newZip) before ZipDiff)

Picasso1990 opened this issue · comments

Released newZip :=ApkNormalized(newZip) before ZipDiff这样得出来的newZip试了好多遍还是MD5不一致,是什么原因呢?
win64命令步骤:
1、ApkNormalized.exe new.apk outnew.apk;
2、ZipDiff.exe old.apk outnew.apk patch.diff;
3、ZipPatch.exe old.apk patch.diff outToNew.apk;
但是这样得出来的apk和new.apk或者outnew.apk这三个的MD5都不一致

我猜测你的apk没有使用signV2签名,而且old.apk没有进行过ApkNormalized.exe,所以最后的结果会md5不一致(这是为了优化patch速度,从old中copy了压缩状态的数据,只能保持逻辑一致);
ZipDiff.exe的输出就会告知patch结果是失败还是逻辑一致还是二进制级别一致;
所有你可以选择old.apk也进行ApkNormalized.exe(推荐)或者outnew.apk进行V2或V3签名。

thx,解决了