VSTS Build Generation抛出无效的位码版本错误

时间:2018-07-02 02:30:16

标签: ios build azure-devops llvm azure-pipelines

要为测试人员生成内部版本,我们在项目中使用VSTS。当我们在Mac中使用xcode签出并运行分支时,它可以正常工作。 但是,当我尝试通过VSTS发布构建时,会引发如下错误,并且构建失败。

  

ld:无法重新解析位代码束中的目标文件:“无效的位代码   版本(生产者:“ 902.0.39.2_0”阅读器:“ 900.0.39.2_0”)”,使用   libLTO版本'LLVM版本9.0.0,(clang-900.0.39.2)'   架构arm64

我知道问题可能是由于存在两个不同版本的编译器。我正在使用Xcode 9.2,构建要上传的源代码的服务器也有Xcode 9.2。还有一件事是,过去我已经将Beta Xcode版本9.4提交到了分支。会造成问题吗?还是我在这里遗漏了其他东西?

我还从一些堆栈溢出和git的建议中听到,更新Xcode将解决此问题。我对此表示满意,但最后要保留该选项,因为在服务器中有一些服务器和内部版本排队,例如android和WebApp内部版本,我们已通过VSTS对其进行了自动化,这些操作会暂时停止。

非常感谢任何帮助或指针。

注意:VSTS服务器在内部尝试存档构建。因此,error: Invalid bitcode version (Producer: '800.0.35.0_0' Reader: '703.0.31_0')中可接受的答案可能会提供解决方案。但是情况仍然有所不同,因为VSTS可能会在后台尝试一些不同的事情。

3 个答案:

答案 0 :(得分:37)

当我尝试使用二进制框架(在我的情况下为Crashlytics / Fabric)创建项目的存档时,这发生在我身上。该框架是使用Xcode 9.4编译的,但我使用的是Xcode 9.2(看起来900.0.39.2_0是Xcode 9.2,而902.0.39.2_0是Xcode 9.4)。我通过在构建设置中将启用位码临时设置为来解决了该问题。

注意:位代码对于将iOS应用提交到App Store不是必需的。 (但是,对于Apple Watch应用程序是强制性的。)

另一种解决方案是将二进制框架降级到较旧的版本(使用兼容的Xcode版本构建)。

答案 1 :(得分:3)

找到了我面临的问题的解决方案。 从问题上可以看出,VSTS服务器的Xcode 9.2具有900.0.39.2_0,因此更新vsts服务器中的xcode版本可以解决此问题。 我们需要注意的是,当我们在本地计算机上更新xcode版本时,最好在VSTS服务器中更新xcode版本,以避免将来出现此类问题。

答案 2 :(得分:1)

就我而言,我禁用了 Target 中的位码 enter image description here

但是我没有禁用我的项目中的位码 enter image description here

我只是将项目的设置位代码更改为“否” ,就可以了。...