Closed Picasso1990 closed 4 years ago
收到问题。
我在macos下,用系统自带的压缩生成的zip文件,使用ApkNormalized处理后,用系统或keka都能正确解压,windows下用7zip解压能够复现报错(看起来正确解压但会有错误日志)。而换用keka来创建zip就无法复现该问题;
可能的原因: 生成的zip文件中如果是0字节的文件,并且使用了deflate算法,那么在ApkNormalized的时候,就不会保存任何文件的数据,这和7zip的默认逻辑不匹配(没有数据来解压)。
我试了一下,构造了一个这样的apk文件,7zip解压报错,但还是能够正确的安装和运行在一步华为手机上。
是的,能够正常运行,是否有办法使7zip解压正确呢?根据“那么在ApkNormalized的时候,就不会保存任何文件的数据”,这个是不是在ApkNormalized中可以使原本apk中有什么样的文件就以怎么样的形式保存呢?
额外的问题:如果我原本的apk中游戏文件是经过压缩的,有些文件是没有经过压缩的,那么使用了ApkNormalized之后这些文件的压缩性有正确的保存下来吗?
额外的问题:如果我原本的apk中游戏文件是经过压缩的,有些文件是没有经过压缩的,那么使用了ApkNormalized之后这些文件的压缩性有正确的保存下来吗?
当前ApkNormalized不会去改变文件是否压缩的属性(但要修改该问题可能会调整策略)。
是否有办法使7zip解压正确呢?
会尝试修改一下ApkNormalized的流程,保留0字节大小的压缩文件的压缩数据(这会破坏旧的patch的流程造成不兼容); 还有一种简单修改ApkNormalized的方式:遇到0字节的压缩文件时属性修改为不压缩就不会破坏旧的patch的流程了。
更新了一个新版本,ApkNormalized出来的zip包可以用7zip兼容打开了,并且默认时不影响部署的旧patch;
出现原因:当apk中的assets中存在一个空文件(可以自己随便创建一个文本为空的文件),这时候使用ApkNormalized进行正则化之后,再使用7 zip工具进行解压,会出现错误,错误日志为:数据错误assets/nullfile
请问出现该错误的原因是什么呢?您那边方便分析一下吗?
备注:自己随便造一个apk都会出现该错误