Skip to content

feat(macos): 接入桌面支持及双版本构建发布 CI - #4

Draft
CaiJingLong wants to merge 3 commits into
zhoufuweigg:mainfrom
CaiJingLong:feat/macos-support
Draft

CaiJingLong wants to merge 3 commits into
zhoufuweigg:mainfrom
CaiJingLong:feat/macos-support

Conversation

@CaiJingLong

Copy link
Copy Markdown

新增 macOS 桌面工程,使 Flutter 应用可以在本机编译、打包并加载设备端 Go 核心。此 PR 保持 Draft:独立分支的两版 Release 构建已通过,但平台完整验收尚未完成。

改动

  • 接入 CocoaPods、macOS 12.0 工程目标、Go arm64 / x86_64 动态库构建嵌入、FFI 加载、窗口 / 全屏、系统代理和 Mac 设备识别。
  • 增加 macOS 打包脚本,默认 ad-hoc 临时签名,也可传入本机钥匙串身份;不包含证书、个人路径、构建产物或缓存。
  • 增加合成 MP4、AES HLS、CENC 的实机集成入口和手动预览入口,验证时禁用站源图片。
  • 补充 GitHub Actions 两种站源版本的 macOS 构建、架构 / 签名 / 摘要检查和 artifact 上传;受信任推送或默认分支手动执行时可发布 macOS 预览包。
  • PR 事件不执行 Release,默认令牌权限为只读;移除原来已关闭的 Windows / iOS 占位 job,并更正发布说明。

与播放修复的关系

关联 #3,但该修复不包含在此分支。两个 PR 都基于上游 main,分别使用独立 worktree 和远端分支。建议先合入 #3,再对本平台分支完成媒体验收。

此前本地组合版本(本适配 + #3)通过了三种媒体播放、跳转、全屏、下载、离线导出、FFmpeg 封装 / 拼接和 Computer Use 画面检查;该结果不等于当前独立分支已通过全部播放测试。

验证与限制

  • 独立 worktree:默认版和全站源版 Release 构建通过;主程序与 Go dylib 包含 arm64 / x86_64;深度签名和两份 ZIP 摘要校验通过。
  • Python 19 项测试、新增 Dart 验证文件分析、actionlint 均通过。
  • CI 已配置,云端实跑结果以 Actions 为准;全量 Dart / Go 回归沿用上游现有非阻断策略,不声称全部通过。
  • 先前组合验证中,Flutter 全量测试有 23 项失败,Go 目录缓存 / 游标测试存在失败和 panic,详细情况见 README。
  • 使用独立桌面模式,关闭 App Sandbox;未公证,Intel 实机、最低系统版本、代理切换、局域网和完整媒体队列仍待验收。

原因:
- 项目缺少 macOS 工程、Go 核心加载和桌面运行配置
- 现有 Actions 只实际构建 Android,发布任务未排除 PR 事件

改动:
- 新增 macOS 工程、通用 Go 动态库嵌入、窗口全屏、系统代理和设备识别
- 增加本机签名构建入口、依赖锁文件及合成媒体验证入口
- 在 Actions 构建两种站源版本,校验双架构、签名和 ZIP 摘要并上传产物
- 为受信任事件接入 macOS 预览包发布,PR 不执行发布,默认令牌权限降为只读
- 在 README 中区分独立平台构建结果与包含播放修复的组合验收结果

影响:
- 本分支不包含共享播放修复,完整媒体验收依赖上游 PR zhoufuweigg#3
- 独立 worktree 的两版 Release、19 项脚本测试、新增 Dart 文件分析和 actionlint 通过
- 保持开发快照状态,未公证;Intel 实机及完整平台回归待验收
原因:
- 新 fork 需要通过分支推送触发首次云端构建

改动:
- 对 feat/macos 分支启用现有双版本检查与打包
- 发布条件同时检查事件与 Git 引用,仅允许主分支、版本标签或默认分支手动运行

影响:
- 功能分支和 PR 仅上传构建产物,不创建或更新 Release
原因:
- 两版 macOS 云端构建和签名成功,但 Xcode 26.6 将 verify_arch 后的文件路径误认为架构

改动:
- 将输入文件放在 lipo 命令选项之前,保留逐架构检查

影响:
- 修复构建产物上传前的校验失败,本机命令和 actionlint 检查通过
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant