我的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相关联。
答案 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”的配置来创建调试版本,所以有一些必须跳过的箍才能做到这一点。工作正常。