在Xcode 8

时间:2016-10-09 15:39:12

标签: swift xcode

我的测试项目在我的物理设备(iPhone)中成功运行。但是,我在我的项目中安装了一个pod。我收到错误,说没有找到代码签名。我找到了一些与此问题相关的文章。{{3}该文章建议需要包含一些代码签名绕过pod文件,如下所示

  post_install do |installer|
   installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
        config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
        config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
        config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
    end
   end
 end

代码没有解决问题。提前谢谢......

1 个答案:

答案 0 :(得分:2)

来自 Rashwan L 回答。我尝试了这3个步骤。但是,它没有解决我的问题。可能它可以适用于不同的场景。我正在阅读相同的文章链接在帖子中。文章提到错误可以通过代码签署pod项目或绕过代码签名来解决修改pod文件。

一旦我编写了pod项目的代码。一切都开始工作......

文章信息如下:

Swift框架库需要代码签名但不是Objective-C

进一步深入研究这个问题,我们发现新的Swift框架正在构建正确,并且只有预先存在的Objective-C Pod(以前的静态库)因代码签名错误而失败。是时候打谷歌了! 在对CocoaPods GitHub问题页面进行了大量研究并查看了最新的iOS / OS X依赖管理器Carthage的一些类似问题之后,我意识到Objective-C库不应该获得代码签名。 Swift框架需要代码签名,因为它们嵌入了Swift标准库和运行时,可以在较新的项目中使用较旧的Swift代码。 Apple需要代码签名来验证正在复制到iOS应用程序中的运行时代码(有助于强制执行iOS安全沙箱)。旧学校的Objective-C静态库不需要这个,实际上甚至不支持它,因此关于“没有签名身份匹配团队ID(null)的奇怪的构建错误。”

解决方案 - 禁用代码签名 一种解决方案是手动编辑每个Pod库目标并禁用代码签名。这不是一个很好的选择,因为每次重新运行pod安装时都会重新创建这些构建设置。在仔细阅读CocoaPods文档后,我们找到了解决方案。一个“安装后”脚本,在将Pod目标保存到磁盘之前修改它们(并集成到Xcode工作区中。)我们通过适当的Build Settings为每个Pod依赖项手动禁用代码签名。将其添加到Podfile的底部,您的代码签名错误将得到解决!

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
        config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
        config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
       end
    end
  end

我希望,这个答案会帮助别人......