我不确定如何在我的dext授权文件中设置com.apple.developer.driverkit.transport.usb
键。 Info.plist文件已经包含IOKitPersonalities
字典,并且在阅读com.apple.developer.driverkit.transport.usb
字典后,看起来它应该包含与IOKitPersonalities
条目具有相同信息的条目。
与entitlements file中显示的项目非常相似的项目WWDC video about driver kit设置为:
<key>com.apple.developer.driverkit.transport.usb</key>
<true/>
当我将其设置为<true/>
时,系统扩展名开始。在从应用程序中看到日志行之前,我确实看到过这样的行:
...
2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)
这种权利应该只反映IOKitPersonalities
词典中的内容吗?
在钥匙完全拔出的情况下,我得到:
...
2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aad)::exit(CDHash check failed)
2020-05-06 12:23:19.253517+0200 0x51ac2 Default 0x0 0 0 kernel: DK: IOUserServer(sc.example.MyUserUSBInterfaceDriver-0x100002aae)::exit(Entitlements check failed)
..所以我猜钥匙必须在那儿。
我正在使用log stream --source | grep MyUserUSBInterfaceDriver
查看与该应用相关的日志行
答案 0 :(得分:3)
我的理解是,您需要有效地列出您的供应商/设备ID匹配条件-即,使用以下三种模式之一:
<key>com.apple.developer.driverkit.transport.usb</key>
<array>
<dict>
<key>idProduct</key>
<integer>123</integer>
<key>idVendor</key>
<integer>1234</integer>
</dict>
<dict>
<key>idProduct</key>
<integer>1024</integer>
<key>idProductMask</key>
<integer>65504</integer>
<key>idVendor</key>
<integer>1234</integer>
</dict>
<dict>
<key>idProductArray</key>
<array>
<integer>12345</integer>
<integer>23456</integer>
<integer>34567</integer>
</array>
<key>idVendor</key>
<integer>1234</integer>
</dict>
</array>
要清楚,这意味着权利必须为 array -> dictionaries 类型。
注意:Apple仍未在约4周后批准客户的DriverKit权利要求,因此我仍在开发签名和禁用SIP的情况下进行操作,但至少在上述情况下,我没有收到任何投诉有关系统日志中无效的com.apple.developer.driverkit.transport.usb
权利的问题(我对<true/>
所做的工作非常多)。
我假设列出的任何idVendor
值也必须由Apple嵌入到您的签名证书中,以进行分发签名。