配置 xcodebuild 命令打包支持 Bitcode

栏目: 编程工具 · IOS · 发布时间: 6年前

内容简介:我们通常会把一些公用的模块抽离出来打成一个 .a 静态库或者 .framework 动态库,然后再嵌入到宿主工程中。最近我们的 App 工程开启 Bitcode 编译选项后(Enable Bitcode = YES),发现在进行 Archive 归档打 Release 包时,报如下错误,提示说工程使用的 libTestStaticSDK.a 静态库不支持 Bitcode:但是我们的 libTestStaticSDK 静态库工程的 Build Settings 中同样是有配置开启 Bitcode 的,为什么

我们通常会把一些公用的模块抽离出来打成一个 .a 静态库或者 .framework 动态库,然后再嵌入到宿主工程中。

最近我们的 App 工程开启 Bitcode 编译选项后(Enable Bitcode = YES),发现在进行 Archive 归档打 Release 包时,报如下错误,提示说工程使用的 libTestStaticSDK.a 静态库不支持 Bitcode:

ld: bitcode bundle could not be generated because '/.../TestApp/TestStaticSDKLib/libTestStaticSDK.a(TestStaticSDK.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture armv7

但是我们的 libTestStaticSDK 静态库工程的 Build Settings 中同样是有配置开启 Bitcode 的,为什么打出来的 .a 包却不支持 Bitcode 呢?

通过查阅 StackOverflow 我们发现,原来开启 Bitcode 后,在 Xcode 中进行 “Build” 或 “Archive” 时,Xcode 会自动在编译命令后面添加 -fembed-bitcode 标识,而如果使用 xcodebuild 命令进行打包,则需要手动添加一个 OTHER_CFLAGS ,如下:

xcodebuild build OTHER_CFLAGS="-fembed-bitcode" -target libTestStaticSDK ...

另外一种解决方案是,在静态库 Xcode 工程的 Build Settings 中,添加一个 “User-Define Setting”,内容为: 'BITCODE_GENERATION_MODE' => 'bitcode' ,如下图所示:

配置 xcodebuild 命令打包支持 Bitcode

这样在使用 xcodebuild 命令时就不用添加 OTHER_CFLAGS="-fembed-bitcode" 了。

综上,为了通用,我们可以在 xcodebuild 命令后同时添加上述两种标识,因此一个完整的静态库打包脚本大致如下(同样适用于 Framework 的打包):

配置 xcodebuild 命令打包支持 Bitcode

参考链接


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法竞赛入门经典(第2版)

算法竞赛入门经典(第2版)

刘汝佳 / 清华大学出版社 / 2014-6-1 / CNY 49.80

《算法竞赛入门经典(第2版)》是一本算法竞赛的入门与提高教材,把C/C++语言、算法和解题有机地结合在一起,淡化理论,注重学习方法和实践技巧。全书内容分为12 章,包括程序设计入门、循环结构程序设计、数组和字符串、函数和递归、C++与STL入门、数据结构基础、暴力求解法、高效算法设计、动态规划初步、数学概念与方法、图论模型与算法、高级专题等内容,覆盖了算法竞赛入门和提高所需的主要知识点,并含有大量......一起来看看 《算法竞赛入门经典(第2版)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具