我在我的iOS应用程序中直接链接PLCrashReporter而不使用任何外部工具,现在当我尝试在Xcode 7上编译它时,我收到链接错误:
LD: ' ... / CrashReporter.framework / CrashReporter始终(libCrashReporter-iphoneos.a-的ARMv7-master.o)' 不包含bitcode。您必须在启用bitcode的情况下重建它 (Xcode设置ENABLE_BITCODE),从中获取更新的库 供应商,或禁用此目标的bitcode。对于架构armv7
我在哪里获得更新的框架或源代码,以便在启用bitcode的情况下编译它们并在不禁用整个项目的bitcode的情况下摆脱错误?
答案 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。
答案 2 :(得分:2)
这对我有用,为了在我的项目中包含Rollbar框架:
在我的工作区中,我首先从Project Navigator中选择我的项目 - >我的项目目标 - >构建设置 - >启用Bitcode = NO
然后我从Project Navigator中选择PODS - >滚动条目标 - >启用Bitcode = NO
答案 3 :(得分:1)
遇到同样的问题。我从源代码构建了崩溃报告框架 https://www.plcrashreporter.org/code
然后在〜/ 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的情况下生成框架?