📖 项目背景
Joyflix Mac 端是一个基于 Objective-C + Xcode 12+ 原生开发的 macOS 影视聚合客户端,内置各大精品影视站与 CCTV 电视直播频道,提供广告屏蔽、优选站点、自定义站点、观影记录等能力。
🎯 部署目标
在目标 Mac 设备上完成 Joyflix.app 的安全安装与启动,完成内置影视源选择、优选网站、用户站点等基础配置,在不削弱系统整体安全性的前提下完成 Gatekeeper 放行。
部署范围
| 组件 | 部署方式 | 说明 |
| Joyflix Mac 客户端 | 本地安装 (.app) | 本方案核心 |
| 自建 Joyflix 服务端 | Docker / Vercel / Netlify | 可选,不属于 Mac 客户端部署范畴 |
| 项目 | 最低要求 | 推荐配置 |
| macOS 版本 | macOS 11 Big Sur | macOS 14 Sonoma 及以上 |
| 芯片架构 | Intel x86_64 | Apple Silicon (M1/M2/M3) 原生 |
| Xcode | 仅源码构建时需要 12+ | 最新稳定版 |
| 磁盘空间 | 200 MB 可用空间 | 1 GB 以上(含缓存) |
| 网络 | 可访问影视源站点 | 稳定宽带连接 |
| 权限 | 管理员账号 | 同左 |
3.1 获取安装包
从官方仓库克隆或下载发布包:
git clone https://github.com/jeffernn/Joyflix-Mac-Objective-C.git
cd Joyflix-Mac-Objective-C
open Joyflix.xcodeproj
3.2 完整性校验
安装前务必验证来源真实性:
- 确认下载自 jeffernn/Joyflix-Mac-Objective-C 官方仓库
- 比对发布包的 SHA-256 校验值(若仓库提供)
- 检查文件隔离属性:
xattr -l ~/Downloads/Joyflix.app
3.3 备份与回滚预案
- 记录当前 macOS 安全策略状态:
spctl --status
- 准备卸载脚本或手动清理路径清单(见第玖节)
- 确认具备管理员权限(sudo 密码)
💡
安全提示
Joyflix 未上架 App Store 且未经过 Apple 公证,macOS Gatekeeper 会拦截启动。推荐按以下 优先级 逐级处理,优先使用最精细化的放行方式。
方法一:控制键点按放行(最安全,推荐首选)
1
在访达中找到 Joyflix.app(通常在"下载"或"应用程序"文件夹)
2
按住 Control 键并点按应用图标(或右键点击)
4
在弹出的警告对话框中再次点击 "打开",该应用将被记为安全性例外
方法二:系统设置中"仍要打开"
适用于 macOS Sequoia (15) 及以上版本:
1
双击 Joyflix.app,出现拦截警告后点击 "完成"(不要点"移到废纸篓")
3
向下滚动到"安全性"区域,找到"已阻止使用,因为…"提示,点击 "仍要打开"
⚠️
"仍要打开"按钮时效
"仍要打开"按钮仅在首次尝试打开应用后的 1 小时内可见;若找不到该按钮,重新双击一次应用即可刷新计时。
方法三:移除隔离标志(精细化放行)
仅针对该应用移除隔离属性,不关闭全局 Gatekeeper:
xattr -r -d com.apple.quarantine /Applications/Joyflix.app
方法四:全局禁用 Gatekeeper(最后手段,不推荐)
sudo spctl --master-disable
sudo spctl --master-enable
🚨
风险提示
长期禁用 Gatekeeper 会显著削弱 Mac 的恶意软件防护能力,仅在完全确认应用来源可信时临时使用,完成后务必立即重新启用。
5.1 选择内置影视源
首次启动会弹出窗口要求选择内置影视源,按以下原则选择:
- 优先选择延迟低、连通性好的站点
- 可后期通过"优选网站"功能动态调整
5.2 优选网站配置
为应对影视源加载慢或不稳定的问题:
③
勾选 "自动优选" 选项,下次启动时将自动打开最优影视站
5.3 用户站点添加
5.4 缓存与观影记录
🧹 清除缓存
菜单栏"拓展功能" → "清除缓存",可删除应用本地所有缓存内容。
📺 观影记录
菜单栏"拓展功能" → "观影记录",查看历史浏览记录。
| 测试项 | 操作步骤 | 预期结果 | 状态 |
| 应用启动 | 双击 Joyflix.app | 正常启动,无 Gatekeeper 拦截 | 待验证 |
| 影视源加载 | 选择内置影视源并播放 | 视频可正常加载与播放 | 待验证 |
| 优选网站 | 开启自动优选后重启 | 自动选中可用最佳站点 | 待验证 |
| 用户站点 | 添加自定义站点 URL | 站点出现在列表中,可播放 | 待验证 |
| 缓存清除 | 执行清除缓存操作 | 本地缓存被清空,应用正常运行 | 待验证 |
| 观影记录 | 播放视频后查看记录 | 历史浏览记录正确显示 | 待验证 |
❓ 提示"需要安装 FlashPlayer 才能播放"
部分影片依赖 Flash Player,需提前安装 Flash Player 并允许运行。
❓ 提示"文件已损坏,打不开"
按方法三(移除隔离标志)或方法二("仍要打开"流程)处理。
xattr -r -d com.apple.quarantine /Applications/Joyflix.app
❓ Apple Silicon 启动闪退
若应用仅编译了 x86_64 版本,需安装 Rosetta 2:
softwareupdate --install-rosetta --agree-to-license
❓ "仍要打开"按钮不出现
距离上次尝试已超过 1 小时,重新双击一次应用即可刷新按钮计时。
🔒 技术合规
- 仅部署 Apache-2.0 协议的开源 Joyflix Mac 客户端
- 安装包来源须为官方 GitHub 仓库
- 禁止从第三方镜像或破解站点获取
- 运行未签名软件需自行评估来源可信度
⚖️ 使用合规
- Joyflix 仅作为影视聚合工具
- 不存储、上传或分发任何视频内容
- 所有视频均来自第三方影视站
- 仅供学习和个人使用,禁止商业用途
⛔
明确排除项
本部署方案 不包含 Emby 高级订阅会员破解脚本的配置与启用,不包含任何绕开软件授权校验、会员限制的机制,不包含其他侵犯知识产权或违反软件许可协议的行为。
9.1 应用卸载
osascript -e 'quit app "Joyflix"'
rm -rf /Applications/Joyflix.app
rm -rf ~/Library/Application\ Support/Joyflix
rm -rf ~/Library/Caches/Joyflix
9.2 恢复安全策略
sudo spctl --master-enable
spctl --status
9.3 回滚到历史版本
- 前往官方仓库的 Releases 或 Actions 页面
- 下载上一稳定版本的构建产物
- 按第肆节流程重新安装放行
查看隔离属性
xattr -l /Applications/Joyflix.app
移除隔离标志
xattr -r -d com.apple.quarantine ...
禁用 Gatekeeper
sudo spctl --master-disable
启用 Gatekeeper
sudo spctl --master-enable
查看 Gatekeeper 状态
spctl --status
安装 Rosetta 2
softwareupdate --install-rosetta
退出应用
osascript -e 'quit app "Joyflix"'
删除应用
rm -rf /Applications/Joyflix.app
| 项目 | 信息 |
| 部署负责人 | [请填写] |
| 部署日期 | [请填写] |
| 安装版本 | [请填写,如 commit xxxxxxx] |
| macOS 版本 | [请填写] |
| 芯片架构 | [Apple Silicon / Intel] |
| 官方仓库 | https://github.com/jeffernn/Joyflix-Mac-Objective-C |
| 项目许可证 | Apache-2.0 |