2

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

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

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

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

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

4

0 回答 0