SSZipArchive
ZipArchive是一个用于在iOS、macOS和tvOS上压缩和解压缩文件的简单实用类。
- 解压zip文件;
- 解压带密码的zip文件;
- 解压AES加密的zip文件;
- 创建zip文件;
- 创建大文件(>4.3Gb);
- 创建带密码的zip文件;
- 创建AES加密的zip文件;
- 选择压缩级别;
- 将NSData实例压缩。 (带文件名)
版本2.5.0+ 更新最低OS版本
此项目的关键依赖库是zlib库。根据 CVE-2018-25032,版本1.2.12之前的zlib在解压(即压缩)时,如果输入有许多远距离匹配,则可能导致内存损坏。
zlib 1.2.12包含在macOS 10.15+(带最新安全补丁)、iOS 15.5+、tvOS 15.4+、watchOS 8.4+中。 因此,自ZipArchive版本2.5.0起,这些OS版本将成为新最低版本。
如果您需要支持早期版本的ZipArchive来支持较早的OS版本,请针对更早的版本,但请注意您将使用此库的不维护版本。
我们不会支持使用已知存在漏洞的依赖项的ZipArchive版本。
安装和设置
主分支配置为支持Objective-C和Swift 4及以上。
SSZipArchive在Xcode 12及以上版本、iOS 15.5及以上版本、tvOS 15.4及以上版本、macOS 10.15及以上版本、watchOS 8.4及以上版本上运行。
CocoaPods
在您的Podfile中
pod 'SSZipArchive'
请明确定义您的最低部署目标,例如:platform :ios, '15.5'
推荐的CocoaPods版本应至少为CocoaPods 1.7.5。
SPM
在https://github.com/ZipArchive/ZipArchive.git中将Swift Package的引用添加为(仅限SSZipArchive 2.5.0及以上版本或master)
Carthage
在您的Cartfile中
github "ZipArchive/ZipArchive"
我们不发布Carthage预构建包。开发者被鼓励自己构建。
手动
- 将
SSZipArchive
和minizip
文件夹添加到您的项目中。 - 将
libz
和libiconv
库添加到您的目标中。 - 将
Security
框架添加到您的目标中。 - 添加以下GCC_PREPROCESSOR_DEFINITIONS:
HAVE_INTTYPES_H HAVE_PKCRYPT HAVE_STDINT_H HAVE_WZAES HAVE_ZLIB ZLIB_COMPAT $(inherited)
。
SSZipArchive需要自动引用计数支持。
使用
Objective-C
//Import "#import <ZipArchive.h>" for SPM/Carthage, and "#import <SSZipArchive.h>" for CocoaPods.
// Create
[SSZipArchive createZipFileAtPath:zipPath withContentsOfDirectory:sampleDataPath];
// Unzip
[SSZipArchive unzipFileAtPath:zipPath toDestination:unzipPath];
Swift
//Import "import ZipArchive" for SPM/Carthage, and "import SSZipArchive" for CocoaPods.
// Create
SSZipArchive.createZipFileAtPath(zipPath, withContentsOfDirectory: sampleDataPath)
// Unzip
SSZipArchive.unzipFileAtPath(zipPath, toDestination: unzipPath)
License
SSZipArchive受MIT许可证保护,我们的稍作修改的minizip-ng(原minizip)3.0.6版本则受Zlib许可证许可。
Acknowledgments
- 非常感谢ZipArchive的创建者aish,是该项目启发了SSZipArchive。
- 感谢@soffes为SSZipArchive提供的名字。
- 感谢@randomsequence实现创建支持技术。
- 感谢@johnezang在道路上的所有惊人帮助。
- 感谢@nmoinvaz的minizip-ng(原名minizip),ZipArchive的核心。
- 感谢所有贡献者。