要为测试人员生成内部版本,我们在项目中使用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可能会在后台尝试一些不同的事情。
答案 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)