我目前正在进行一个名为“ LockWatch”的iOS调整,该调整应该在锁定屏幕上显示类似watchOS的表盘。此调整涉及一个基本的插件系统,该系统从指定目录加载捆绑包(name.watchface),该目录到目前为止已经可以使用。
问题是,由于缺少或无效的代码签名,这些捆绑包无法在设备上执行,但是在iOS Simulator内部,捆绑包的加载和执行就很好。
我通过添加“ com.apple.backboard.client”权利来在iOS 9上进行此工作(因为日志表明缺少该特定权利,因此SpringBoard崩溃了)。
bundle项目本身是一个简单的Xcode项目,使用macOS选项卡中的“ Bundle”目标创建,Base SDK设置为“ Latest iOS(10.2)”。
我尝试了以下签名方法:
完全不签名
Xcode管理的签名
Xcode手动签名(用于Debug和Release)
使用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崩溃。
最佳答案
看来我终于自己解决了。
事实证明,表盘束根本没有签名(因此出现required code signature missing
消息)。
我在包含以下脚本的包中添加了Run Script
阶段:/usr/bin/codesign --force --sign - --timestamp=none $CODESIGNING_FOLDER_PATH/$PRODUCT_NAME
当我研究关于代码签名的另一个问题时,我想到了这个主意,有人建议清除_CodeSignature文件夹的内容。在我的构建输出中显然不存在。
关于ios - iOS:代码签名无效/缺少必需的代码签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42133980/