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:配置文件无效。捆绑包中包含的配置文件无效 [缺少代码签名证书]