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

Posted

技术标签:

【中文标题】iOS:代码签名无效/缺少必需的代码签名【英文标题】:iOS: Code signature invalid/required code signature missing 【发布时间】: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 崩溃。

【问题讨论】:

【参考方案1】:

看来我终于自己解决了。

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

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

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

当我研究另一个关于代码签名的问题时,我得到了这个想法,有人建议清除 _CodeSignature 文件夹的内容。这在我的构建输出中显然不存在。

【讨论】:

以上是关于iOS:代码签名无效/缺少必需的代码签名的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin:libmonosgen-2.0.dylib:MCNearbyServiceAdvertiser 上缺少必需的代码签名

错误 ITMS-90283:配置文件无效。捆绑包中包含的配置文件无效 [缺少代码签名证书]

Xcode 3.1.4 缺少代码签名权利选项?

修复 iOS ipa 文件(缺少代码签名证书)

iPhone 应用程序代码签名错误 - “...签名无效...”

Xcode 5“无效的代码签名权利”错误