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 .
MIT License
310 stars 49 forks source link

ZipDiff zip file failed if zip > 4G #94

Closed zminy121 closed 10 months ago

zminy121 commented 10 months ago

使用该工程,编译出ZipDiff, ZipPatch. 如果zip文件< 4G,能正常差分还原,但是如果zip > 4G, ,则不能进行差分。 我试着将工程中int-->uint64_t, 但是几乎每个接口都会报错,现在卡在check(kCENTRALHEADERMAGIC == readUInt32(headBuf));不知如何修改了。 请问大神,这个工程会优化适配> 4G的差分还原吗?

sisong commented 10 months ago

并不是简单修改 int-->uint64_t 就能支持大于4G的zip包; 而是需要支持 zip64 格式。
你可以试试我新写的 sfpatcher 项目, 它默认就添加了zip64支持,应该能处理大于4G的zip64文件。

一直没有给该项目添加zip64支持,是因为现在最大的游戏apk包应该还在2.5G以内; 而且安卓的开发工具好像也没有支持zip64。 还有 过大的zip包 patch还原时间将非常长,可能并不是很合适用这种方式?

zminy121 commented 10 months ago

感谢大神抽空回复,获益良多,再次感谢