SharpZipLib 向下兼容 Unity
文章目录
介绍
SharpZipLib 是一个 C# 原生的 Zip 库,License 以前是 GPL,后来修改为 MIT,便于商业使用。
bsdiff.net 是一个 C# 原生的二进制差异补丁工具,但是依赖 SharpZipLib。
问题
Unity 项目中可以使用 SharpZipLib 来解压 apk 文件中的内容。但是 SharpZipLib 最新的正式版本 Release 0.86.0.518 · icsharpcode/SharpZipLib 并不支持高版本的 zip 压缩文件,在解压时会提示异常:
|
|
因为 Android 版本需要经过加固处理,经过 腾讯御安全 - APP加固|安卓加固 处理后运行 apk 发现此问题。
尝试
尝试将 SharpZipLib 中使用的 C# 6.0 语法降级为 C# 3.0 语法。经过降级后发现其实依赖的语法糖较少,主要是 nameof(x)
这种有 200+ 个,并没有替换成对应的变量类型名,而是简单地替换为 "nameof(x)"
。
其次去除了项目在 Unity 下的编译警告。
解决方案
修改的版本已发布到 GitHub,方便下载使用
Release SharpZipLib for Unity 20180520 · networm/SharpZipLib
发布策略
增加 readme
分支简要介绍目标。
针对 SharpZipLib 的后续更新,会根据需要建立以时间命名的分支,然后在原版的基础上处理代码,使之对 Unity 兼容。
最终就是每一个发布一个单独的分支。