iPr*_*abu 26 ios ios-frameworks xcode7 bitcode
从Xcode 7开始,它成为第三方框架应该支持Bitcode的常见问题之一.我们还可以通过在Build设置中将ENABLE_BITCODE设置为NO来禁用BITCODE.但我不想把它关闭,而是我想将我的所有框架转换为兼容BITCODE.
那么除了在Xcode中编译框架之外,如何检查框架是否与BITCODE兼容.有时Xcode会为一个框架提供BITCODE兼容性错误,即使它们没有BITCODE支持,也会留下其他框架.
有没有工具/命令行检查?
Mic*_*ers 40
在Apple开发者论坛的讨论中,用户dshirley和bwilson建议使用命令行工具otool并grep检查是否存在bitcode部分.  
$ otool -l libName.o | grep __LLVM
要么
$ otool -l MyFramework.framework/Versions/A/MyFramework | grep __LLVM
运行上面的命令,如果库包含bitcode,您将看到segname __LLVM输出.
Mec*_*cki 13
接受的答案表明你应该做,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部分的存在并不表示Bitcode存在,但在搜索时也会找到它__LLVM.
小智 6
我观察到__bitcode节仅适用于静态库,而不适用于动态库。因此,在解决方案上是以下命令。
otool -l libDeviceManager.a | grep __LLVM 
同样,有时使用胖二进制文件,即使存在,otool也可能无法给出__LLVM段。在这些情况下,可以使用以下命令
otool -arch armv7 -l libDeviceManager.framework/libDeviceManager | grep __LLVM
| 归档时间: | 
 | 
| 查看次数: | 10976 次 | 
| 最近记录: |