产品文档 / 历史记录与验收范围以文中日期为准
新工程迁移说明(2026-10-01):本文记录旧版设计或旧工程历史状态。当前实现以
ZipHarbor/ZipHarbor.xcodeproj为准,参见 迁移映射、新架构 和 最终验收报告。
ZipHarbor 功能对齐与验收报告
验收日期:2026-09-30
工程目录:app/
Bundle ID:com.xiaolongxu.zipharbor
原型基线:app-prototype.html
1. 结论
原生 App 已完成一次 UI/UX 重构,核心结构已经按 HTML 原型对齐。当前页面不再使用旧版系统 TabView、系统大标题、List/Form 组合,而是采用原型中的自定义顶栏、渐变欢迎卡、双列快捷操作、圆角内容区和胶囊底部导航。
这不是逐像素复制:原型使用演示数据和网页图标,原生 App 使用真实 Files/Photos 入口、SwiftUI 原生控件和动态数据。核心信息层级、主操作入口、页面导航和任务筛选逻辑已对齐,具体字体渲染、系统弹窗和文件选择器仍由 iOS 决定。
2. UI/UX 对齐
| 原型区域 | 原生实现 | 结果 |
|---|---|---|
| 首页顶栏:Files、最近文件数、搜索、更多 | FilesHomeView.homeHeader |
已对齐 |
| 渐变欢迎卡:本地处理、隐私说明、打开压缩包 | FilesHomeView.welcomeCard |
已对齐 |
| 双列快捷操作:打开/解压、创建压缩包 | ActionTile |
已对齐 |
| 最近归档列表、收藏筛选、空状态 | ArchiveRow、ContentUnavailableView |
已对齐并接入真实 SwiftData |
| 底部 Files / Tasks / Settings 胶囊导航 | ZipHarborBottomBar |
已对齐,支持无障碍标识 |
| 任务页筛选胶囊、任务卡片、空状态 | TaskCenterView |
已对齐 |
| 设置页分组、隐私与外观开关 | SettingsView |
已对齐 |
| 创建页分步信息层级、格式/压缩级别/密码/分卷 | CreateArchiveView |
已对齐;7z 密码创建显示边界提示 |
| 归档详情页搜索、类型筛选、选择和解压设置 | ArchiveDetailView |
已对齐 |
视觉验收截图:iphone14-home-final.png;真机深色模式截图:iphone14-real-home-final.png
3. 已实现功能
| 功能域 | 当前结果 | 代码/页面 |
|---|---|---|
| 文件导入 | Files 文件选择器、分享面板 URL、照片/视频选择器;导入后复制到 App 本地 Archives | AppModel.importArchives、Files 首页 |
| 归档识别 | ZIP、7z、RAR、TAR、GZIP、BZIP2、ZIPX 常见读取;复合扩展名识别和目录安全校验 | LibArchiveEngine.inspect |
| 目录查看 | 搜索、全选、清除、目录选择、加密标记、收藏 | ArchiveDetailView |
| 解压 | 流式读取、选择性解压、保留目录、冲突策略、原子临时文件、进度、路径穿越阻断 | LibArchiveEngine.extract |
| 创建 | 多文件/文件夹、ZIP、普通 7z、压缩级别、照片/视频 | LibArchiveEngine.create、CreateArchiveView |
| 加密 | ZIP AES-256 创建和解压;7z 密码创建明确拒绝并引导使用 ZIP;加密 RAR 明确提示不支持 | ArchiveFailure.encryptionUnsupported、创建页密码提示 |
| ZIP 分卷 | .zip.001 卷组导入/重组;创建端 64/128/256/512 MB 切片;完成页分享全部分卷 |
prepareArchiveURL、splitFile |
| 任务和隐私 | SwiftData 任务历史、进度、失败状态;本地处理;Face ID/设备密码应用锁;深色模式 | JobRecord、ZipHarborApp、设置页 |
4. 模拟器验证
已通过
- 构建:
xcodebuild build,iPhone 14 Simulator,成功。 - 单元测试:
ZipHarborTests8/8 通过。 - 路径穿越和绝对路径阻断
- ZIP 创建/识别/解压往返
- ZIP AES 往返
- ZIP AES 无密码解压时进入需要密码状态
- 普通 7z 创建/识别/解压往返
- 7z 密码创建边界拒绝
- ZIP 分卷重组/解压
- 复合扩展名格式识别
- UI 测试:
ZipHarborUITests1/1 通过,覆盖首页、创建页、返回、任务页和设置页导航。 - 安装启动:
simctl install和simctl launch在 iPhone 14 Simulator 成功。 - 结果包:
- 单测:
/tmp/ZipHarbor-sim-unit-release-final-1790772304.xcresult - UI 测试:
/tmp/ZipHarbor-sim-ui-release-final-1790772331.xcresult
国际化验收
- 支持语言:英文(
en)和简体中文(zh-Hans)。 - 本地化资源:
app/Resources/en.lproj、app/Resources/zh-Hans.lproj,包含Localizable.strings和 Face ID 权限用InfoPlist.strings。 - 工程资源已通过
project.yml的sources.buildPhase: resources加入 Copy Bundle Resources,构建产物实际包含两个.lproj目录。 - 首页、创建页、任务页、设置页、详情页、错误提示、数量格式和系统 Face ID 权限说明均已覆盖;格式名、文件大小、日期等使用系统 locale 格式化。
- 在简体中文 iPhone 14 Simulator 上完成安装、启动和首页截图验收:iphone14-zh-i18n.png。
- 简体中文环境全量测试:7/7 单测、1/1 UI 测试通过,结果包:
/tmp/ZipHarbor-i18n-zh-current/Logs/Test/Test-ZipHarbor-2026.09.30_21-29-44-+0800.xcresult。 - 英文环境全量测试:7/7 单测、1/1 UI 测试通过,结果包:
/tmp/ZipHarbor-i18n-current/Logs/Test/Test-ZipHarbor-2026.09.30_21-28-57-+0800.xcresult。
环境提示
测试日志出现 iOS 26.5 Simulator 的 UIAccessibilityLoaderWebShared 重复实现警告,但本次 UI 测试仍完成并通过;该警告来自系统运行时,不是 ZipHarbor 代码。
该模拟器的 simctl 截图以 iOS 26 的窗口化方式呈现,上下会出现黑色窗口留白;真机截图为完整设备画布,页面内容和安全区正常。
5. iPhone 14 真机验收
设备:iPhone 14,UDID IPHONE14_UDID,iOS 27.0。
- 真机单元测试:
ZipHarborTests7/7 通过,包含 ZIP、ZIP AES、普通 7z、ZIP 分卷、路径安全和 7z 密码边界。 - 真机安装和冷启动:已使用当前含国际化资源的真机包,通过
devicectl device install app、process launch重新安装并启动;已保存 iphone14-real-i18n-reinstalled.png。截图确认真机运行时为简体中文,深色模式下页面和快捷操作卡片文本对比度正常。 - 真机 UI Test:测试 runner 在开启自动化模式时超时,报
Timed out while enabling automation mode;未形成页面断言结果,这一项标记为环境阻断。
密码解压问题修复
此前 libarchive 在真正读取加密 ZIP 文件内容时返回 Passphrase required for this entry,应用将其误判为损坏压缩包并直接显示错误。当前已统一映射为需要密码/密码错误状态,解压会重新打开密码输入弹窗;修复后的模拟器单测 8/8、UI 测试 1/1 通过,结果包:
- 单测:
/tmp/ZipHarbor-password-fix-sim2/Logs/Test/Test-ZipHarbor-2026.09.30_22-14-43-+0800.xcresult - UI 测试:
/tmp/ZipHarbor-password-fix-full/Logs/Test/Test-ZipHarbor-2026.09.30_22-15-16-+0800.xcresult - 修复版真机截图:iphone14-real-password-fix.png
本轮交互修复:从解压动作触发密码输入时,输入正确密码后会自动继续当前解压任务,不再要求再次点击“解压到…”;解压完成页的“完成”按钮现在会关闭结果弹窗。修复后模拟器全量测试 8/8 单测、1/1 UI 测试通过,真机修复版已重新安装,并通过 devicectl device process launch --console 验证应用进程可正常启动。
真机补充:最终包安装后,iPhone 14 可能显示 iOS 的“无法验证 App”开发者信任提示,需要设备联网完成开发证书验证;该提示属于手工签名测试环境限制,应用进程本身已成功启动。
结果包:
- 单测:
/tmp/ZipHarbor-real-unit-release-final-1790772379.xcresult - UI Test:
/tmp/ZipHarbor-real-ui-final-1790771593.xcresult
6. 已知边界
- 当前使用的
libarchive.xcframework7z 写入器不提供 7z AES 创建能力;应用已在逻辑层和 UI 层明确禁止该组合,ZIP AES 仍可用。 - ZIP 分卷使用 ZipHarbor 的
.zip.001原始切片卷组,ZipHarbor 内可导入和解压,其他工具是否识别取决于其卷格式支持。 - 暂停后检查点恢复、本地通知、Shortcuts、回收站、云端 File Provider 下载等待、逐文件冲突询问、空间预检和完整校验仍需后续补齐。
- RAR 以读取为主,加密 RAR 明确提示不支持;发布前仍需使用真实 RAR4/RAR5 样本做跨工具兼容性验证。
7. 发布前动作
- 在真机 UI 自动化环境稳定后补跑页面断言;当前已完成真机安装、启动和核心归档单测。
- 使用真实 ZIP AES、RAR4/RAR5、7z 样本和 ZIP 分卷 fixture 做跨工具兼容测试。
- 完成空间检查、特殊文件拒绝、完整校验、暂停/恢复和通知后再提交 App Store。