我想构建一个 macOS 应用程序来过滤特定的网络请求,因此我需要添加 NetworkExtensions 功能。但是在添加 NetworkExtensions 功能后,我收到以下消息:
Your development team, "Potato Dev2", does not support the Network Extensions capability.
上述消息来源图片:https://i.sstatic.net/H46gE.png
平台以及您是否是 Apple 开发者计划的成员,都可能会限制您的应用程序可用的功能
文档没有明确说明哪些功能需要成为 Apple 开发者计划的一部分。我也不明白为什么我需要成为 Apple 开发者计划的一部分才能在自己的计算机上编写软件。请注意,至少据我所知,NetworkExtensions 功能不依赖于 Apple 的任何服务(与 HealthKit 或 Game Center 不同)。
有没有一种方法可以在不加入 Apple 开发者计划的情况下向 macOS 应用程序添加网络扩展功能?
如果您在 Mac 上禁用系统完整性保护 (SIP)(macOS 恢复环境中的终端中的 csrutil disable
),并通过添加
amfid
禁用 amfi_get_out_of_my_way=1
的权利检查,您应该能够做到这一点到内核的命令行参数。 (再次恢复环境,
nvram boot-args='amfi_get_out_of_my_way=1'
)
您在代码签名时需要绕过 Xcode 并直接使用
codesign
命令,因为正如您所注意到的,Xcode 会执行配置文件权利检查。 codesign
本身不执行此检查。
这基本上允许与 DriverKit 系统扩展相关的任何事情,所以我希望它也能与网络系统扩展一起使用。
我找到了问题的答案:要编写使用 NetworkExtension API 的 macOS 软件,您必须是 Apple 开发者计划的成员(100 美元/年)。有关详细信息,请参阅 https://developer.apple.com/support/app-capability/。
@pmdj 这还有效吗?我在蒙特利,在尝试运行系统扩展时面临同样的问题。另外,您能详细说明一下协同设计部分吗?我在禁用 SIP 时尝试了 codesign -sf
path/to/extension
,但仍然遇到相同的错误:
Cannot create a Mac App Development provisioning profile for "com.example.ExampleCam.ExampleCam". Personal development teams, including ***, do not support the System Extension capability.