3

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

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

我在哪里可以获得更新的框架或源来编译它们并启用位码并在不禁用整个项目的位码的情况下消除错误?

4

5 回答 5

8

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

来源从这里获得:PLCrashReporter 1.2.1

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

在 Xcode 中将 Xcode 项目拉到该文件夹​​中,并将以下内容添加到项目构建设置的自定义编译器设置“其他 C 标志”部分:-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

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

于 2015-09-24T10:52:58.587 回答
3

有 2 个选项。
1. 下载PLCrashReporter源代码并在启用位码的情况下对其进行编译,然后在您的项目中使用它。
2. 为您的目标禁用位码
转到您的目标的构建设置选项卡,搜索Enable Bitcode设置值为 NO。

在此处输入图像描述

于 2015-09-24T10:58:42.757 回答
2

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

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

在此处输入图像描述

然后我从 Project Navigator -> Rollbar Target -> Enable Bitcode = NO 中选择 PODS

在此处输入图像描述

于 2016-04-15T12:55:57.597 回答
1

经历过同样的问题。我使用https://www.plcrashreporter.org/code从源代码构建崩溃报告器框架

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

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

于 2015-09-17T23:01:53.893 回答
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”已启用位代码(ENABLE_BITCODE = YES),但“macosx”平台不支持它

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

于 2015-10-30T20:49:13.247 回答