Using a Custom Toolchain in Xcode

特殊情况下需要使用自定义的Toolchain,Xcode便捷支持选择不同的Toolchain。自定义的Toolchain在macOS和Xcode升级时可能需要做维护。

Xcode会读取两个目录的Toolchain:

Xcode.app/Contents/Developer/Toolchains/
~/Library/Developer/Toolchains/

上面目录仅作用于当前路径的Xcode,下面目录作用于所有安装的Xcode。

笔者试验时,最新的Xcode为12.5,默认已经不再显示Toolchain的修改入口。

当向上述路径新增一个自定义的Toolchain时,Toolchain的入口才会显示。可以在两个地方修改Xcode默认使用的Toolchain:

  • Xcode->Preferences->Components->Toolchains
  • Xcode主菜单->Toolchains

可以以XcodeDefault.xctoolchain为基础修改一个自定义的Toolchain。新Toolchain的plist文件包含以下字段:

  • CFBundleIdentifier:Toolchain包名,唯一标识;
  • CompatibilityVersion:Xcode适配版本;
  • DisplayName:显示的Toolchain名称(可选)
  • ShortDisplayName(可选)

其中CompatibilityVersion在试验时发现必须填写2,否则会提示:

The toolchain is not compatible with this version of Xcode.

没有搜索到更多的关于CompatibilityVersion的信息,可以参考Support for generating Xcode 8 compatible toolchains 中的描述:

Xcode 8 requires CompatibilityVersion 2
Xcode 7.3 (the first version supporting external toolchains) requires
CompatibilityVersion 1

使用自定义的Toolchain,在macOS或XCode版本升级时,有可能会出现Toolchain中自定义库文件签名失效的问题,可以参考解决办法:xcodebuild:code signature invalid

其他文章

pod package的不足和改进
bitcode ITMS-90562: Invalid Bundle
iOS URLSession Authentication Challenge及SSL Pinning
NSUserDefaults的suitename
iOS 色温和白平衡设置