DriverKit USB驱动分发:是否需在授权及配置文件中添加idProduct?
DriverKit USB驱动授权与配置疑问
配置场景
我的DriverKit驱动在Info.plist中同时指定了匹配USB设备的idVendor和idProduct:
<key>idVendor</key> <integer>1234</integer> <key>idProduct</key> <integer>5678</integer>
但驱动授权文件(Entitlements)仅指定了idVendor:
<dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>1234</integer> </dict> </array> <key>com.apple.security.app-sandbox</key> <true/> </dict>
App Store配置文件(Provisioning Profile)同样仅指定了idVendor:
<key>beta-reports-active</key> <true/> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>1234</integer> </dict> </array>
问题
由于该驱动仅匹配同时具备指定idVendor和idProduct的设备,在分发(如TestFlight或App Store构建)时,是否需要在驱动授权文件和配置文件中显式添加idProduct才能确保驱动正常工作?还是仅指定idVendor即可?
回答
你需要在驱动授权文件和App Store配置文件中显式添加idProduct,才能保证驱动在TestFlight或App Store分发后正常工作,原因如下:
- DriverKit的USB传输权限(
com.apple.developer.driverkit.transport.usb)要求授权范围需与驱动实际匹配的设备规则对应。苹果的签名和审核机制会校验驱动的匹配逻辑是否被授权范围覆盖,虽然仅指定idVendor理论上包含该厂商下所有设备,但你的驱动明确只匹配单一产品,授权范围和驱动功能保持一致才是符合规范的做法。 - 仅保留
idVendor在本地测试可能正常,但提交到App Store或TestFlight时,苹果审核系统可能因权限范围与驱动实际功能不匹配拒绝审核,或者用户设备上出现驱动无法加载的情况(系统会判定驱动权限超出授权范围)。
修改后的驱动授权文件示例:
<dict> <key>com.apple.developer.driverkit</key> <true/> <key>com.apple.developer.driverkit.transport.usb</key> <array> <dict> <key>idVendor</key> <integer>1234</integer> <key>idProduct</key> <integer>5678</integer> </dict> </array> <key>com.apple.security.app-sandbox</key> <true/> </dict>
同时需同步更新App Store配置文件中的com.apple.developer.driverkit.transport.usb数组内容,添加对应的idProduct字段。
内容的提问来源于stack exchange,提问作者K880
相关产品推荐
相关产品推荐

