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

时间:2015-01-15 21:45:20

标签: ios xcode6 xcodebuild

我的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;
      };
    };
  };
};

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

3 个答案:

答案 0 :(得分:4)

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

sigh --team_id <DevelopmentTeamID>

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

sigh(team_id: "<DevelopmentTeamID>")

答案 1 :(得分: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

答案 2 :(得分:0)

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