如何在 MacOS 系统扩展中包含 CocoaPods 框架?

Kri*_* A. 5 macos xcode cocoapods networkextension macos-system-extension

我正在尝试创建一个使用系统扩展的应用程序(NEFilterPacketProvider确切地说)。目前我正在使用 CocoaPods 来管理我的依赖项。一切工作正常,直到我尝试在系统扩展中使用框架为止。

我创建了系统扩展目标所依赖的私有 Pod 规范。构建本身很好。在我尝试安装并运行系统扩展后出现问题。无法启动,因为找不到框架。

经过一番调查后发现,该框架并未作为系统扩展的一部分包含在内,而是复制到主应用程序包中。系统扩展目标仅引用应用程序的相对框架目录,作为运行时框架搜索路径的一部分。这是有问题的,因为系统扩展是在/Library/SystemExtension/*安装后复制的。由于搜索路径是相对的,因此它不再起作用,因为扩展名已被复制到应用程序外部。

经过一番谷歌搜索后,CocoaPods 的“方式”似乎是将所有框架保留在应用程序包中。理想情况下,我希望 CocoaPods 将框架复制到我的系统扩展包中。这将确保系统扩展可以作为独立的二进制文件运行,而不必依赖于硬编码路径中存在的应用程序。

我想知道除了添加/Application/XXX.app/Contents/Frameworks到运行时框架搜索路径并告诉用户该扩展将无法工作之外,是否还有更好的解决方案。