# 离线、打包与许可 ## 1. 离线定义 DateToSpine 的“全功能离线”定义为: - 应用本身不建立网络连接。 - 不使用 CDN、远程字体、远程 Shader、WebView 在线页面或在线 API。 - 不在运行时下载 Qt、Runtime、图片解码器或其他依赖。 - 不上传用户资源、路径、日志或统计数据。 - 不包含自动更新和联网遥测。 - 用户已经准备好的匹配版本 Spine Editor 可在断网环境中完成转换。 Spine Editor 是外部前置软件。DateToSpine 不控制 Editor 自身的授权策略,但必须在断网验收中验证既有激活和已缓存版本能够完成流程。 ## 2. 构建期与运行期网络 - 五套正式 Spine Runtime 源码直接随主仓库提供,不使用 Submodule、FetchContent 或构建期下载。 - 内网环境克隆主仓库后即可取得完整 Runtime;若文件缺失,CMake 直接报错,不尝试联网补齐。 - Qt、CMake 和编译器属于预先安装的构建工具,不由本项目联网安装。 - 官方测试资源只存在于开发源码树,不进入最终安装包。 - 最终应用运行时不得使用网络。 - CI 下载的官方测试资源不进入打包阶段的输入集合。 ## 3. macOS 打包 目标: - Apple Silicon 原生包。 - Intel 或 Universal 2 是否首发,由原型性能和构建环境决定。 - `.app` 和 `.dmg`。 - Qt framework、platform plugin、image plugin、Runtime 插件和本地资源完整部署。 - 正式发行执行代码签名和 notarization;这是发布流程,不是最终应用运行时联网依赖。 应用不得修改用户的 Spine.app 或其缓存。 ## 4. Windows 打包 目标: - Windows 10/11 x64。 - MSVC 2022 v143。 - 使用 `/MD` 与 Qt 官方构建一致。 - 部署 MSVC Runtime、Qt platform plugin、imageformats 和 Runtime 插件。 - 安装包格式在原型后从 MSIX、WiX/MSI 或 Inno Setup 中确定。 - 正式发行建议代码签名。 最终用户不需要安装 CMake、Visual Studio 或 Qt SDK。 ## 5. Runtime 许可 项目集成官方 Spine Runtimes 时必须遵守: - [Spine Runtimes License Agreement](https://esotericsoftware.com/spine-runtimes-license) - [Spine Editor License Agreement](https://esotericsoftware.com/spine-editor-license) 发行前需要法务或产品负责人确认最终分发模式。技术实现至少保证: - `licenses/` 保存完整、未修改的 Runtime 许可文本。 - 安装包包含 Runtime 许可和版权声明。 - About/关于 页面提供第三方许可入口。 - 不隐藏用户需要合法 Spine 许可的前提。 - 不分发 Spine Editor、激活信息或 Editor 更新文件。 - Runtime 插件不作为通用 SDK 对外提供开发接口。 ## 6. 官方测试资源 已确认规则: - 官方 GitHub 仓库资源只用于开发、兼容性测试和 CI。 - 官方测试资源不进入最终安装包。 - 打包清单不包含 `tests/fixtures/external/`。 - 发行检查使用路径、文件名和 SHA-256 禁止列表防止误打包。 - 测试报告可记录资源 case id 和哈希,但不嵌入资源文件。 ## 7. 第三方依赖清单 每个依赖记录: ```text name version/commit source URL license modified or unmodified linked statically or dynamically included platforms notices path ``` 至少包括: - Qt 6 - Spine Runtimes 3.8/4.0/4.1/4.2/4.3 - 测试框架 - 可能引入的日志或打包依赖 新增依赖必须经过:离线可部署性、许可证、维护状态、体积和安全评审。 ## 8. 网络禁止措施 - 不链接应用层 HTTP 客户端,除非未来需求重新评审。 - 资源加载器只接受本地文件协议。 - 代码扫描阻止 CDN URL 和动态依赖下载逻辑。 - 集成测试在网络阻断环境运行。 - 打包后执行连接监控测试。 文档中的官方链接仅供人阅读,不会被应用自动访问。 ## 9. 发行目录白名单 打包采取白名单而不是“复制整个构建目录”: ```text application executable Qt runtime libraries/plugins dts runtime plugins icons/translations/shaders licenses/notices user documentation ``` 明确排除: ```text tests/ official sample assets source repository metadata developer caches temporary recovery jobs Spine Editor binaries activation information debug-only symbols(独立保存,不进入普通安装包) ```