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

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

ld:'… / CrashReporter.framework / CrashReporter(libCrashReporter-iphoneos.a-armv7-master.o)'不包含位码。 您必须使用位代码重新启动(Xcode设置ENABLE_BITCODE),从供应商获取更新的库,或者禁用此目标的位代码。 为build筑armv7

我在哪里可以得到更新的框架或源代码编译启用bitcode并摆脱了错误,而不禁用整个项目的位码?

我最终通过从源代码构buildPLCrashReporter 1.2.1来解决这个问题。 这个版本是Xcode 7和iOS9修复合并的最低版本。

源代码从这里获得: PLCrashReporter 1.2.1

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

将该文件夹内的Xcode项目-fembed-bitcode Xcode中,并将以下内容添加到项目构build设置的“自定义编译器设置”“其他C标志”部分: -fembed-bitcode

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

然后closuresXcode GUI中的项目。 自定义设置是必要的,因为我们要使用xcodebuild从命令行构build,以避免PLCR弃用错误,并且当这样做时默认只有-fembed-bitcode-marker。 我们正在重写默认行为,并且需要抑制这导致的硬停止警告。

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

xcodebuild -configuration Release -target 'Disk Image'

这将运行构build并离开框架在./build/Release/PLCrashReporter-1.2.1/iOS Framework

现在,这些步骤将会生成一个支持bitcode的框架,但是第三方崩溃报告与bitcode不兼容(当App Store重新编译时,你无法从运行中获取符号文件)。

有2个选项。
1.下载PLCrashReporter源代码并编译启用它,并在您的项目中使用它。
2.禁用目标的位码
转到您的目标的生成设置选项卡,searchEnable Bitcode设置值为NO。

在这里输入图像说明

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

在我的工作区中,我首先从Project Navigator中select我的项目 – >我的项目目标 – > Build Settings – > Enable Bitcode = NO

在这里输入图像说明

然后我从Project Navigator – > Rollbar Target – > Enable Bitcode = NO中selectPODS

在这里输入图像说明

有经验的同样的问题。 我使用https://www.plcrashreporter.org/code从源代码构build了崩溃报告框架

  • 在Xcode中打开它
  • select红色靶心的“CrashReporter”目标。
  • build立它

然后在〜/ Library / Developer / Xcode / DerivedData / CrashReporter-xxxxxxx中search.framework软件包

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

ld:warning:目标文件(/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(cf.o))是为更新的OSX版本(10.6)构build的,而不是(10.5)ld:warning:目标文件(/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a(arclite.o))是为较新的OSX版本( 10.6)比被链接(10.5)

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

我应该怎么做才能产生的位码启用框架?