Xcode 7' CrashReporter不包含bitcode'链接器错误

时间:2015-09-11 14:32:13

标签: ios xcode xcode7 plcrashreporter bitcode

我在我的iOS应用程序中直接链接PLCrashReporter而不使用任何外部工具,现在当我尝试在Xcode 7上编译它时,我收到链接错误:

  

LD:   ' ... / CrashReporter.framework / CrashReporter始终(libCrashReporter-iphoneos.a-的ARMv7-master.o)'   不包含bitcode。您必须在启用bitcode的情况下重建它   (Xcode设置ENABLE_BITCODE),从中获取更新的库   供应商,或禁用此目标的bitcode。对于架构armv7

我在哪里获得更新的框架或源代码,以便在启用bitcode的情况下编译它们并在不禁用整个项目的bitcode的情况下摆脱错误?

5 个答案:

答案 0 :(得分:8)

我最终通过从源代码构建PLCrashReporter 1.2.1来解决这个问题。此版本是Xcode 7和iOS9修复程序合并的最小版本。

从这里获取来源:PLCrashReporter 1.2.1

将下载的1.2.1源解压缩到一个文件夹中。

将Xcode项目放在Xcode中的该文件夹中,并将以下内容添加到Custom Compiler Settings" Other C Flags"项目构建设置的一部分:-fembed-bitcode

接下来,将以下内容添加到自定义编译器设置"其他警告标志"项目构建设置的一部分:-Wno-error=unused-command-line-argument

然后从Xcode GUI关闭项目。自定义设置是必要的,因为我们将使用xcodebuild从命令行构建以避免PLCR弃用错误,并且在这样做时,默认情况下只有-fembed-bitcode-marker在以这种方式构建框架时。我们正在覆盖默认行为,并且需要抑制由此引起的硬停止警告。

最后,从包含xcode项目文件的源的zip文件所在的文件夹中的终端窗口提示符运行以下命令:

xcodebuild -configuration Release -target 'Disk Image'

这将运行构建并将框架保留在./build/Release/PLCrashReporter-1.2.1/iOS Framework

现在,这些步骤将生成一个启用bitcode的框架,但第三方崩溃报告与bitcode不兼容(当App Store重新编译时,您无法从动态版本中获取符号文件)。

答案 1 :(得分:3)

有两种选择。
1.下载PLCrashReporter源并将其编译为启用bitcode,并在项目中使用它 2.禁用目标的bitcode
转到目标的构建设置选项卡,将Enable Bitcode设置值搜索为NO。

enter image description here

答案 2 :(得分:2)

这对我有用,为了在我的项目中包含Rollbar框架:

在我的工作区中,我首先从Project Navigator中选择我的项目 - >我的项目目标 - >构建设置 - >启用Bitcode = NO

enter image description here

然后我从Project Navigator中选择PODS - >滚动条目标 - >启用Bitcode = NO

enter image description here

答案 3 :(得分:1)

遇到同样的问题。我从源代码构建了崩溃报告框架 https://www.plcrashreporter.org/code

  • 在Xcode中打开它
  • 使用红色靶心选择“CrashReporter”目标。
  • 构建

然后在〜/ Library / Developer / Xcode / DerivedData / CrashReporter-xxxxxxx中搜索以获取.framework包

答案 4 :(得分:0)

不幸的是,这个问题又出现了。当我再次尝试编译时,我得到:

  

ld:警告:对象文件   (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(cf.o))   是为更新的OSX版本(10.6)而不是链接(10.5)ld构建的:   警告:目标文件   (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(arclite.o))   是为更新的OSX版本(10.6)而不是链接(10.5)

而构建的

此外,如果我在项目级别设置启用位代码,我会立即得到错误: 目标'CrashReporter-MacOSX-Static'启用了bitcode(ENABLE_BITCODE = YES),但'macosx'平台不支持

如何在启用bitcode的情况下生成框架?