如何检查一个框架是否支持Xcode7的BITCODE

从Xcode 7开始,第三方框架应该支持Bitcode成了常见的问题之一 。 我们还可以通过在生成设置中将ENABLE_BITCODE设置为NO来禁用BITCODE。 但我不想把它closures,而是我想把我所有的框架转换为BITCODE兼容。

那么除了在Xcode中编译框架之外,如何检查一个框架是否与BITCODE兼容。 有时Xcode会给出一个框架的BITCODE兼容性错误,即使它们没有BITCODE支持,也会留下其他框架。

有没有工具/命令行检查?

从这个苹果开发者论坛的讨论,用户dshirley和bwilsonbuild议使用命令行工具otoolgrep来检查是否存在位代码部分。

 $ otool -l libName.o | grep __LLVM 

要么

 $ otool -l MyFramework.framework/Versions/A/MyFramework | grep __LLVM 

运行上述命令,如果库包含位代码,您将看到segname __LLVM输出。

接受的答案表明你应该做grep __LLVM但我宁愿这样做

 otool -l libName.o | grep __bitcode 

因为有不同的__LLVM段,并不是所有这些都表明存在Bitcode。 这是一个例子:

 Section sectname __bitcode segname __LLVM addr 0x00000000000007d0 size 0x0000000000000f10 offset 3360 align 2^4 (16) reloff 0 nreloc 0 flags 0x00000000 reserved1 0 reserved2 0 Section sectname __cmdline segname __LLVM addr 0x00000000000016e0 size 0x0000000000000069 offset 7216 align 2^4 (16) reloff 0 nreloc 0 flags 0x00000000 reserved1 0 reserved2 0 

__cmdline部分的存在并不表示位代码是存在的,但是当仅仅search__LLVM时也可以find它。

你可以试试这些命令:

 otool -arch armv7 -l libDeviceManager.a | grep bit code 

 otool -arch arm64 -l libDeviceManager.a | grep bitcode