设置 Xcode 构建设置终端

Setting Xcode Build Settings Terminal

我想在不使用 Xcode IDE 的情况下更改 .xcodeproj 的构建设置,而是通过终端命令(准确地说是代码设计身份和配置文件)。

我搜索了所有但只找到了从终端build/archive项目的命令,我不想要的。我想要的只是更改设置,这样当我在 Xcode 中打开项目时,它的签名身份和配置文件设置为我在终端中设置的内容。

Xcodebuild 命令只是 builds/archives 使用我作为参数传递的项目,它不会在项目的构建设置中将它们设置为值。

运行 xcodebuild -target <target-name> -showBuildSettings 在我的项目所在的终端中,为我提供了项目的完整构建设置,但我没有得到任何设置它们的方法。

我还阅读了 here 关于使用 -setObject 的内容,但这对我也没有帮助,因为它还使用我提供的参数值而不是实际设置它们来构建代码。

目前正在使用 Xcode 6.3 和 Xcode 7.

我们将不胜感激。

所有 Xcode 设置实际上存储在 <project-name>.xcodeproj/project.pbxproj 中。 看起来像

buildSettings = {
    CODE_SIGN_ENTITLEMENTS = "";
    CODE_SIGN_IDENTITY = "iPhone Developer";
    "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";

    ...

    PRODUCT_NAME = "$(TARGET_NAME)";
    PROVISIONING_PROFILE = "";
    SKIP_INSTALL = YES;
};

代码签名身份CODE_SIGN_IDENTITY键控制,配置文件PROVISIONING_PROFILE键控制。

project.pbxproj是一个文本文件,可以在CLI中用传统的文本处理工具编辑,比如sed

sed -ie 's/CODE_SIGN_IDENTITY = "iPhone Developer"/CODE_SIGN_IDENTITY = ""/g' <project-name>.xcodeproj/project.pbxproj
sed -ie 's/PROVISIONING_PROFILE = ""/PROVISIONING_PROFILE = "1c28c979-6bef-4917-aa34-92aecd91315c";/g' <project-name>.xcodeproj/project.pbxproj

您可以使用

获得可用的签名身份列表
security find-identity -v -p codesigning

对于PROVISIONING_PROFILE,它是配置文件的UUID,可以用

获取
grep -aA1 UUID /path/to/mobileprovision