'无效的位码版本(生产者:'902.0.39.2_0'阅读器:'900.0.37_0')'

时间:2018-09-08 04:46:47

标签: ios architecture swift4 xcode9 bitcode

我正在使用 Xcode 9.0

我的Pod文件

pod 'Alamofire', '~> 4.3'
pod 'SwiftyJSON'
pod 'AlamofireSwiftyJSON'
pod 'KSToastView', '0.5.7'
pod 'SDWebImage', '~> 4.0'
pod 'NVActivityIndicatorView'   
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'CarbonKit'
pod 'SBPickerSelector'
pod 'SwiftyStoreKit'    
pod 'Fabric'
pod 'Crashlytics'
pod 'SAMKeychain', '1.5.2'

我的错误日志:

  

ld:无法重新解析位代码束中的目标文件:“无效的位代码   版本(生产者:'902.0.39.2_0'阅读器:'900.0.37_0')',使用libLTO   适用于架构arm64的版本'LLVM版本9.0.0,(clang-900.0.37)'   clang:错误:链接器命令失败,退出代码为1(使用-v查看   调用)

我阅读了许多有关此问题的文章,但无法解决。我指的是this,是的,请注意,我要使用

构建项目存档
configuration = Debug
ENABLE_BITCODE = YES
configuration = Release
ENABLE_BITCODE = YES
completeSettings = some
ENABLE_BITCODE = YES

有什么建议吗?

6 个答案:

答案 0 :(得分:8)

解决此问题的步骤:

  • 构建设置
  • 在“构建选项”类别中搜索“启用位码”选项。
  • 选择编号。

答案 1 :(得分:2)

这是因为您在使用较新版本的Xcode构建的项目(框架)中具有某些依赖项。

您必须更新Xcode版本或禁用项目中的位代码(“项目”>“构建设置”>“启用位代码=否”)

答案 2 :(得分:1)

如果您并排安装了两个不同的Xcode版本,然后使用一个指向错误的命令行工具的版本进行构建,则也可能发生这种情况。 在(更新的)Xcode 10.2旁边安装Xcode 10.1之后,我遇到了这个问题。我的Xcode 10.1指向Xcode 10.2命令行工具,因此使用无效位码版本的链接失败,与您的情况相同。 解决方法是:

  • 在Xcode首选项->位置->命令行工具中更改命令行工具: XCode Preferenes -> Locations

  • 清理构建文件夹,然后单击“存档”。

以上内容对其他Xcode版本也有效。

答案 3 :(得分:0)

您使用的某些库期望使用Xcode 10(可能是Firebase)。使用Xcode 10。

答案 4 :(得分:0)

正如里维拉所说,您使用的某些库期望使用Xcode 10(可能是Firebase)。因此,解决方法是降级库的版本。对我来说,这些版本可以与Xcode 9和启用了位码的选项一起很好地工作:

  pod 'Firebase/Core', '~> 4.13.0'
  pod 'Fabric', '~> 1.7.0'
  pod 'Crashlytics', '~> 3.9.0'

也许您还应该研究要使用哪个旧版本的 Firebase / Messaging

BTW,这就是开发人员应避免在未指定特定版本的情况下避免使用Pod的原因之一(这将导致始终下载Pod的最新版本)。使用pod功能的代码也可能导致版本不兼容。

答案 5 :(得分:0)

编译pod sdk的Xcode版本比您使用的版本更高的可能性很大。

下一个可能的原因是构建设置中的位码。检查是否在您的应用程序目标和框架目标上启用了它。如果添加了可视可可豆,请单击“豆荚”项目,在“目标”部分下,向下滚动到出现此错误的sdk,打开构建设置并检查位码状态。

在我的情况下,Main项目禁用了位码,而pods项目内部的sdk启用了它。禁用它,一切正常。