iPhone 12安装应用报Code Signature不再支持错误,现有解决方案无效
问题根因
这个错误是Xcode 12.5及以上版本对代码签名格式的校验规则升级导致的,仅在真机安装时触发,模拟器运行不需要符合新的签名校验规则,所以不会报错。绝大多数情况下是项目嵌入的第三方库、资源包使用了旧版签名格式导致的。
解决方案
1 清理项目缓存
- 关闭Xcode,删除DerivedData目录,默认路径为
~/Library/Developer/Xcode/DerivedData - 如果你使用CocoaPods管理依赖,删除项目根目录下的
Pods文件夹、Podfile.lock文件和*.xcworkspace文件,重新执行pod install生成新的工作区文件
2 嵌入式二进制文件统一重签
90%以上的同类问题都可以通过这个步骤解决:
- 打开Xcode项目,进入Build Phases标签页,点击右上角+号添加新的
Run Script构建阶段,将这个新阶段拖拽到「Embed Frameworks」阶段的后方 - 在脚本输入框内填入以下内容:
codesign --force --deep --sign "${EXPANDED_CODE_SIGN_IDENTITY}" "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/"
- 勾选脚本选项中的「For install builds only」,避免开发调试时每次构建都执行拖慢速度
3 校验基础签名配置
- 进入项目的Signing & Capabilities标签页,确认「Automatically manage signing」已开启,关联的开发团队正确,Bundle ID无冲突
- 确认你的真机设备已被添加到对应开发者账号的可用设备列表,当前使用的描述文件包含该设备的UDID
4 其他排查点
- 如果你使用Carthage管理依赖,执行
carthage build --use-xcframeworks --no-use-binaries --platform iOS重新编译所有依赖,避免预编译二进制包的签名问题 - 检查项目Resources目录下是否嵌入了带签名的可执行文件、动态库,如果有也需要参照步骤2的逻辑添加重签规则
- 重启真机设备后重新连接Xcode尝试安装
内容的提问来源于stack exchange,提问作者Pizdetz Klown
相关产品推荐
相关产品推荐

