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",
);
};
}
程序员专栏 扫码关注填加客服 长按识别下方二维码进群
近期精彩内容推荐:
在看点这里好文分享给更多人↓↓
来源:oschina
链接:https://my.oschina.net/u/4350344/blog/4743796