xcodebuild命令行:传递DevelopmentTeam ID以进行代码签名

问题描述 投票:13回答:3

我的App为App Store分发提供了一个bundleID。该应用程序还有一个用于企业分发的小变体,因此具有另一个bundleID。自动构建使用以下命令行来设置bundleID并选择正确的签名标识:

xcodebuild -project XYZ.xcodeproj -target XYZ -sdk "iphoneos" -configuration "Debug" BUNDLE_IDENTIFIER=<bundleID_1_or_2> CODE_SIGN_IDENTITY="<identify_1_or_2" build 

这种自动构建一直很好,直到最近我启用了iCloud功能。现在Xcode自动将以下内容添加到project.pbxproj:

TargetAttributes = {
  QWERTY1234567890123456 = {
  DevelopmentTeam = XYZ123456;
    SystemCapabilities = {
      com.apple.iCloud = {
        enabled = 1;
      };
    };
  };
};

注意添加了一个硬编码的“DevelopmentTeam = XYZ123456”;对于这两个版本,DevelopmentTeam ID是不同的。如何自动化?一个更简单的解决方案是在调用xcodebuild之前有一个脚本来修改project.pbxproj,但我不是那个解决方案的粉丝。接下来最好的是创建一个新的“用户定义的设置”,从而通过命令行传递它,但我无法弄清楚如何将用户定义的设置与嵌入在project.pbxproj中的那个DevelopmentTeam ID相关联。

ios xcode6 xcodebuild
3个回答
4
投票

我们能够使用sigh实用程序处理多个DevelopmentTeam ID,该实用程序为配置文件提供自动化。我们将它用作fastlane工具套件的一部分。

sigh --team_id <DevelopmentTeamID>

或者作为fastlane自动化(Fastfile)的一部分:

sigh(team_id: "<DevelopmentTeamID>")

4
投票

在Xcode 8中,这被添加为DEVELOPMENT_TEAM构建设置。您可以像其他设置一样作为命令行参数传递:

xcodebuild
    -sdk "iphoneos"
    -project Foo.xcodeproj
    -configuration "Debug"
...
DEVELOPMENT_TEAM=XYZ123456

有关Xcode 8代码签名更改的更多详细信息,请参阅:https://pewpewthespells.com/blog/migrating_code_signing.html


0
投票

我们最终创建了另一个类似调试的构建配置。在我们的例子中,它被称为“Ad-hoc”,没有特别的原因。我们的构建服务器使用企业证书进行测试构建,因此我们只是将构建配置更改为具有正确的证书和团队参数,而开发“Debug”不再重要。但有一点很有挑战性的是,有些cocoapods(fbtweaks)没有意识到你可能正在使用一种不称为“Debug”的配置来创建调试版本,所以有一些必须跳过的箍才能做到这一点。工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.