Embedded binary is not signed with the same certificate as the parent app解决方案

本文介绍了在使用Xcode编译带有appextension功能的应用时遇到的证书不匹配问题及解决方法。错误源于shareExtension与containingApp使用的证书不同,通过设置一致的provisioning profile解决了该问题。

当我编译一款很早之前的一个带有app extension功能的app时,xcode给我报了这个错误。

错误的原因是containingApp和share Extension的证书不匹配。

我在stackoverflow上看到其他小伙伴的解决方式,我发现这个问题可能有多种解决方式,原因也可能响应的不同。

我的错误原因是share Extension的code signing中的provisioning profile选择的是automitic而containingAPP中选择了确定的profile,(大概这样会导致Xcode不能很好的匹配),之后我把share Extension的
profile选择为对应的确定的profile,错误消除。

贴个stackoverflow的链接吧
http://stackoverflow.com/questions/25927604/xcode6embedded-binary-is-not-signed-with-the-same-certificate-as-the-parent-app

### 嵌套二进制文件签名问题的解决方案 在iOS开发中,当嵌套二进制文件(如框架或插件)未使用与主应用程序相同的证书签名时,可能会导致签名错误。这种问题通常与Xcode的代码签名设置不匹配有关[^1]。以下是解决此问题的具体方法: #### 1. 检查并配置代码签名设置 确保Xcode项目中的代码签名设置一致且正确。打开项目的`Build Settings`,搜索`Code Signing Identity`,确认以下几点: - `Debug`和`Release`配置下的`Code Signing Identity`均设置为正确的开发者证书。 - 确保`Provisioning Profile`也与签名证书匹配。 #### 2. 配置嵌套二进制文件的签名 对于嵌套的二进制文件(例如静态库或动态框架),需要单独为其配置签名。可以通过以下步骤实现: - 在目标框架的`Build Settings`中,确保`Code Sign on Copy`选项被启用。 - 如果使用CocoaPods,则在`Podfile`中添加以下内容以确保所有依赖项使用相同的签名: ```ruby post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['CODE_SIGN_IDENTITY'] = 'iPhone Developer' config.build_settings['PROVISIONING_PROFILE_SPECIFIER'] = '<Your Provisioning Profile>' end end end ``` #### 3. 清理并重新构建项目 有时缓存可能导致签名设置无法生效。执行以下操作以清理并重新构建项目: - 在Xcode中选择`Product > Clean Build Folder`。 - 删除Derived Data:`rm -rf ~/Library/Developer/Xcode/DerivedData`。 - 重新构建项目以应用新的签名设置。 #### 4. 验证签名 构建完成后,可以使用以下命令验证嵌套二进制文件是否已正确签名: ```bash codesign --verify --verbose <path_to_binary> ``` 如果签名成功,命令将返回无错误信息;否则会提示具体的签名问题。 #### 5. 调整dSYM文件生成 根据引用内容[^1],如果需要生成dSYM文件或剥离符号表,确保Xcode的调试符号处理设置正确。在`Build Settings`中,检查以下选项: - `Debug Information Format`应设置为`DWARF with dSYM File`。 - 确保`Strip Linked Product`选项未启用,以免符号表被意外移除。 ### 示例代码块 以下是一个示例脚本,用于自动化验证嵌套二进制文件的签名状态: ```bash #!/bin/bash BINARY_PATH="path/to/your/binary" if codesign --verify --verbose "$BINARY_PATH"; then echo "Signature verification passed." else echo "Signature verification failed. Please check your code signing settings." fi ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值