You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XCode如何创建可打包系统扩展的CLI工具应用

Xcode 打包系统扩展到CLI工具的解决方案

前置说明

Xcode 默认生成的 Command Line Tool 是单二进制文件,无 Bundle 目录结构,无法直接内置资源。你需要先修改配置让CLI工具生成带标准目录结构的 Bundle 包,再按要求放置系统扩展即可。

操作步骤

  • 新建基础CLI项目
    打开Xcode,选择macOS分类下的Command Line Tool模板创建项目,按需选择开发语言。
  • 开启Bundle结构配置
    选中项目的CLI目标,进入Build Settings标签页:
    1. 搜索Enable Bundles,将配置值改为YES
    2. 搜索Wrapper Extension,将配置值改为app(也可自定义扩展名,只要保留Bundle结构即可)
      配置完成后编译产物会变成带Contents目录的Bundle包,而非单二进制文件。
  • 添加系统扩展到项目
    将预编译好的.systemextension格式系统扩展拖入Xcode项目,弹窗中勾选CLI目标、勾选Copy items if needed完成添加。
  • 配置扩展复制路径
    进入CLI目标的Build Phases标签页:
    1. 点击左上角+号,选择New Copy Files Phase
    2. 将该阶段的Destination选为Custom Path,路径填写Library/SystemExtensions
    3. 将你的系统扩展文件拖入该阶段的文件列表,勾选Code Sign On Copy
  • 编写安装卸载逻辑
    调用OSSystemExtensionRequest系列API执行操作,读取内置扩展路径时通过[NSBundle mainBundle]的路径查询方法即可获取到扩展的完整路径:
NSString *extPath = [[NSBundle mainBundle] pathForResource:@"你的扩展名" ofType:@"systemextension"];
  • 权限与签名配置
    1. 给CLI目标添加com.apple.developer.system-extension.install权限entitlement
    2. 开启Hardened Runtime配置
    3. 确保CLI工具和系统扩展均使用合法的开发者ID签名,两者的团队ID需保持一致

验证方式

编译完成后右键点击生成的Bundle包,选择「显示包内容」,确认Contents/Library/SystemExtensions路径下存在你的系统扩展文件即可正常使用。

内容的提问来源于stack exchange,提问作者Aviv David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:15:03