我目前正在进行iOS调整,名为" LockWatch"应该在锁定屏幕上显示类似watchOS的表盘。这个调整涉及一个基本的插件系统,它从指定的目录加载一个bundle(name.watchface),这个目录到目前为止。
但问题是,由于丢失或无效的代码签名,这些捆绑包无法在设备上执行,但在iOS模拟器中,捆绑包被加载并执行得很好。
我在iOS 9上通过添加" com.apple.backboard.client"权利(因为日志说这个特定的权利丢失了,因此SpringBoard崩溃了。)
捆绑项目本身是一个简单的Xcode项目,使用" Bundle"从macOS选项卡中定位,Base SDK设置为"最新iOS(10.2)"。
我尝试过以下签名方法:
这两个文本之间的日志发生了变化:
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崩溃。
答案 0 :(得分:0)
看来我终于自己解决了。
事实证明,表盘束根本没有签名(因此required code signature missing
消息)。
我在包含以下脚本的包中添加了Run Script
阶段:
/usr/bin/codesign --force --sign - --timestamp=none $CODESIGNING_FOLDER_PATH/$PRODUCT_NAME
当我研究有关代码签名的其他问题时,我明白了有人建议清除_CodeSignature文件夹的内容。在我的构建输出中显然不存在。