编程技术记录

世界你好!

启用/关闭Bitcode

Xcode设置路径为Build Settings -> Build Options -> Enable Bitcode

设置后,改变的是构建过程中环境变量ENABLE_BITCODE的值。

需要注意的是,这个设置在不同的构建中表现不一样

  • 平时用于调试、部署的构建,启用Bitcode后,仅进行Bitcode依赖检测,不会生成Bitcode符号到产物中。(项目中即使有非Bitcode库,也不影响调试、部署)
  • 当进行Archive打包时,启用Bitcode后,则要求项目的所有依赖库均启用Bitcode(所有库均要有Bitcode符号)

另外,Xcode构建时也会读取环境变量HIDE_BITCODE_SYMBOLS,这个变量默认YES。当HIDE_BITCODE_SYMBOL=NOENABLE_BITCODE=YES时,则要求项目的所有依赖库均要有Bitcode符号

强制所有构建启用Bitcode

添加-fembed-bitcode编译标识。设置路径为Build Settings -> Apple Clang - Custom Compiler Flags -> Other C Flags

添加后,无论哪种构建,均会强制启用Bitcode。

而通过 Build Settings -> Build Options -> Enable Bitcode 路径启用Bitcode,本质是添加了编译标识 -fembed-bitcode-marker,区别如下

  • -fembed-bitcode ,任何类型的Build都会带上Bitcode符号
  • -fembed-bitcode-marker, 只是在产物中做标记,表示可以支持Bitcode;而在Archive打包时,才会生成Bitcode符号

XcodeBuild构建如何启用BitCode

Shell环境中构建SDK(静态库、动态库)的场景,此时没有Archive构建,那么可以设置BITCODE_GENERATION_MODE=bitcode解决。

BITCODE_GENERATION_MODE可以是marker,也可以是bitcode,默认取marker

例如:

xcodebuild BITCODE_GENERATION_MODE=bitcode .....

如何查看SDK中是否含有Bitcode符号

可以通过Mach-O View工具查看,是否含有Section (__LLVM ,__bitcode ).

也可以使用otool命令查看
命令为otool -s __LLVM __bitcode mach-o文件.

© Beli. All Rights Reserved.