问题描述
我想构建一个可以过滤特定网络请求的macOS应用,因此我需要添加NetworkExtensions功能。但是在添加NetworkExtensions功能之后,我收到以下消息:
Your development team,"Potato Dev2",does not support the Network Extensions capability.
上述消息来自的图片:https://i.stack.imgur.com/H46gE.png
来自Apple's documentation on "Adding Capabilities to Your App":
该平台以及您是否是Apple Developer Program的成员,都可能限制您的应用程序可用的功能
文档没有明确说明哪些功能需要成为Apple Developer Program的一部分。我也看不到为什么需要加入Apple Developer Program才能在自己的计算机上或为自己的计算机编写软件。请注意,至少据我所知,NetworkExtensions功能不依赖于Apple提供的任何服务(与HealthKit或Game Center相对)。
那么有没有一种方法可以在不加入Apple Developer Program的情况下向macOS应用添加网络扩展功能?
解决方法
我想出了我的问题的答案:要编写使用NetworkExtension API的macOS软件,您必须是Apple Developer Program的成员(每年100美元)。有关详细信息,请参见https://developer.apple.com/support/app-capabilities/。
,如果您在Mac上(在macOS恢复环境中的终端中的csrutil disable
)上禁用了系统完整性保护(SIP),并禁用了{{1 }}的权利检查是通过在内核的命令行参数中添加amfid
来进行的。 (同样在恢复环境中,amfi_get_out_of_my_way=1
)
如您所注意到的,您将需要在代码签名时绕过Xcode并直接使用nvram boot-args='amfi_get_out_of_my_way=1'
命令,因为Xcode会执行配置概要文件权利检查。 codesign
本身不执行此检查。
这基本上可以用于与DriverKit系统扩展有关的所有事情,所以我希望它也可以与Network System Extensions一起工作。