【发布时间】:2017-02-09 10:20:26
【问题描述】:
我目前正在开发一项名为“LockWatch”的 iOS 调整,它应该在锁定屏幕上显示类似 watchOS 的表盘。这个调整涉及一个基本的插件系统,它从指定的目录加载一个包(name.watchface),到目前为止它正在工作。
但问题是,由于缺少或无效的代码签名,这些包无法在设备上执行,但在 iOS 模拟器中,这些包被加载并执行得很好。
我通过添加“com.apple.backboard.client”权利在 iOS 9 上进行了这项工作(因为日志表明缺少此特定权利,因此 SpringBoard 崩溃了)。
bundle 项目本身是一个简单的 Xcode 项目,使用 macOS 选项卡中的“Bundle”目标创建,Base SDK 设置为“Latest iOS (10.2)”。
我尝试了以下签名方法:
- 根本不签名
- Xcode 管理的签名
- Xcode 手动签名(用于调试和发布)
- 使用没有授权的 ldid 签名
- 使用具有权利的 ldid 签名
这两个文本之间的日志发生了变化:
SpringBoard(CoreFoundation)[PID] <Notice>: Error loading /var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype: dlopen(/var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype, 265): no suitable image found. Did Find:
/var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype: required code signature missing for '/var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype'
SpringBoard(CoreFoundation)[PID] <Notice>: Error loading /var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype: dlopen(/var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype, 265): no suitable image found. Did Find:
/var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype: code signature invalid for '/var/mobile/Library/LockWatch/Watch Faces/prototype.watchface/prototype'
由于无法执行二进制文件,无法将其主体类实例添加到数组中,SpringBoard 崩溃。
【问题讨论】:
标签: ios objective-c iphone xcode