iOS:缺少代码签名无效/必需代码签名

时间:2017-02-09 10:20:27

标签: ios objective-c iphone xcode

我目前正在进行iOS调整,名为" LockWatch"应该在锁定屏幕上显示类似watchOS的表盘。这个调整涉及一个基本的插件系统,它从指定的目录加载一个bundle(name.watchface),这个目录到目前为止。

但问题是,由于丢失或无效的代码签名,这些捆绑包无法在设备上执行,但在iOS模拟器中,捆绑包被加载并执行得很好。

我在iOS 9上通过添加" com.apple.backboard.client"权利(因为日志说这个特定的权利丢失了,因此SpringBoard崩溃了。)

捆绑项目本身是一个简单的Xcode项目,使用" Bundle"从macOS选项卡中定位,Base SDK设置为"最新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崩溃。

1 个答案:

答案 0 :(得分:0)

看来我终于自己解决了。

事实证明,表盘束根本没有签名(因此required code signature missing消息)。

我在包含以下脚本的包中添加了Run Script阶段:

/usr/bin/codesign --force --sign - --timestamp=none $CODESIGNING_FOLDER_PATH/$PRODUCT_NAME

当我研究有关代码签名的其他问题时,我明白了有人建议清除_CodeSignature文件夹的内容。在我的构建输出中显然不存在。