如何检查一个框架是否支持Xcode7的BITCODE
从Xcode 7开始,第三方框架应该支持Bitcode成了常见的问题之一 。 我们还可以通过在生成设置中将ENABLE_BITCODE设置为NO来禁用BITCODE。 但我不想把它closures,而是我想把我所有的框架转换为BITCODE兼容。
那么除了在Xcode中编译框架之外,如何检查一个框架是否与BITCODE兼容。 有时Xcode会给出一个框架的BITCODE兼容性错误,即使它们没有BITCODE支持,也会留下其他框架。
有没有工具/命令行检查?
从这个苹果开发者论坛的讨论,用户dshirley和bwilsonbuild议使用命令行工具otool
和grep
来检查是否存在位代码部分。
$ 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