我正在开发 DriverKit 驱动程序。我让它在 macOS 上运行,包括一个用 SwiftUI 编写的非常简单的客户端应用程序。那里一切都运转良好。我已将 iPadOS 添加为应用程序的目标,如 iPadOS DriverKit 上的 WWDC 视频所示。该应用程序按预期在我的 iPad 上构建并运行(经过一些工作以限制我在 macOS 上安装时使用
SystemExtensions.framework
)。但是,在 iPad 上安装并运行应用程序后,驱动程序不会显示在“设置”->“常规”中,也不会出现在由应用程序中包含设置包触发的应用程序特定设置窗格中。
我已经确认,在为 iPadOS 构建时,dext 确实包含在应用程序包中(在 MyApp.app/SystemExtensions/com.me.MyApp.MyDriver.dext 中)。我还可以在构建日志中看到 dext 有一个验证步骤,并且似乎成功了。
我不知道为什么当应用程序安装在 iPad 上时,驱动程序没有被发现,或者在任何情况下都没有向用户显示。有人遇到过这个问题并解决了吗?有没有方法可以解决 iOS 上嵌入式 DriverKit 扩展的安装/发现问题?
进一步调试后更新:
我决定尝试让 Apple 的 DriverKitUserClientSample 示例应用程序在 iOS 上运行,因为 WWDC 视频中显示了该应用程序的某些版本,并且它比我的驱动程序简单得多。
按照示例应用程序页面中的配置等说明,我可以使其在 macOS 上运行。但我在 iPadOS 上遇到了完全相同的问题,应用程序运行良好,但驱动程序没有显示在常规设置中,也没有显示在应用程序自己的设置页面中。我正在使用手动、显式生成的应用程序 ID 以及驱动程序和容器应用程序的配置文件。
查看 iPad 上的控制台日志,我看到的唯一似乎与驱动程序(而不是容器应用程序)有关的内容是这一行:
debug 15:35:10.872075-0700 installd open(/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.3XF4J5/extracted/DriverKitSampleApp.app/SystemExtensions/com.openreelsoftware.dext-to-user-client.driver.dext/Info.plist,0x0,0x1b6) = 4
不知道这意味着什么,只是我担心
= 4
是一个错误代码。假设这里使用常规的 open()
,则 4 就是 EINTR // Interrupted system call.
。不确定这是否真的意味着什么。
我已将修改后的 Apple 示例项目版本放在 GitHub 上:https://github.com/armadsen/CommunicatingBetweenADriverKitExtensionAndAClientApp
非常欢迎任何帮助。
我目前遇到了同样的问题。我可以在 iPad 上为 driverkit 构建 Apple 的示例应用程序,但驱动程序不会显示在 iPad 设置应用程序中(既不会显示在应用程序的特定部分中,也不会显示在隐私菜单中)。有人能够完成这项工作吗?