Xcode 与 bitcode 的几个小知识点

北战南征 提交于 2020-11-25 13:50:47

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者 | 酷酷的哀殿
来源 | 酷酷的哀殿的博客

https://ai-chan.top/2020/10/19/Xcode-bitcode/

开启 Enable Bitcode 配置后,不会触发额外的代码优化

根据官方文档,在 Build Settings 页面开启 Enable Bitcode (ENABLE_BITCODE) 选项后,会在 Archive 时,在支持的平台和架构上生成 bitcode 代码。

注意:只有通过 Archive 模式导出并提交到 App Store 时,才可能被苹果进行进一步的代码优化。

BITCODE_GENERATION_MODE

BITCODE_GENERATION_MODE 是 Xcode 定义的一个枚举值。
它存在两种可能值:marker 和 bitcode。

marker 代表编译的二进制文件只包含 size 等于 1 的 marker进行占位。

bitcode 代表编译的二进制文件包含真正的 bitcode 信息。

{
    Name = "BITCODE_GENERATION_MODE";
    Type = enum;
    Values = (
        "marker",
        "bitcode",
    );
    DefaultValue = marker;
}

CLANG_BITCODE_GENERATION_MODE

CLANG_BITCODE_GENERATION_MODE 是 Xcode 的隐藏配置项。
该配置项只在开启 ENABLE_BITCODE 配置,并且编译目标的架构属于 arm64, arm64e, armv7, armv7s, armv7k 之一时才会生效。

当开发者开启 Enable Bitcode (ENABLE_BITCODE) 选项后,会在 Archive 时,传入编译参数 -fembed-bitcode

其它情况下,会传入编译参数 -fembed-bitcode-marker

// Generate bitcode options - not visible in the build settings.
{
    Name = "CLANG_BITCODE_GENERATION_MODE";
    Type = Enumeration;
    Values = (
        none,
        marker,
        bitcode,
    );
    DefaultValue = "$(BITCODE_GENERATION_MODE)";
    Architectures = ( arm64, arm64e, armv7, armv7s, armv7k );
    Condition = "$(ENABLE_BITCODE) == YES";
    CommandLineArgs = {
        marker = (
            "-fembed-bitcode-marker",
        );
        bitcode = (
            "-fembed-bitcode",
        );
    }
}

LD_BITCODE_GENERATION_MODE

与 CLANG_BITCODE_GENERATION_MODE 类似,唯一的区别是两个配置分别影响 编译 和 链接 两个阶段。

// Bitcode options
{
    Name = "LD_BITCODE_GENERATION_MODE";
    Type = Enumeration;
    Values = (
        marker,
        bitcode,
    );
    DefaultValue = "$(BITCODE_GENERATION_MODE)";
    Architectures = (
        arm64e,
        arm64,
        armv7,
        armv7s,
        armv7k,
    );
    Condition = "$(ENABLE_BITCODE) == YES";
    CommandLineArgs = {
        marker = (
            "-fembed-bitcode-marker",
        );
        bitcode = (
            "-fembed-bitcode",
        );
    };
}

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:  

 外包程序员入职蚂蚁金服被质疑,网友:人生污点

 11 月全国程序员平均工资出炉

 弃用 Notepad++,还有 5 款更牛逼的选择!

 福利!手把手教你Python爬取女神套图

在看点这里好文分享给更多人↓↓

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!