Cha*_*ang 13 xcodebuild ios xcode6
我的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
Run Code Online (Sandbox Code Playgroud)
这种自动构建一直很好,直到最近我启用了iCloud功能.现在Xcode自动将以下内容添加到project.pbxproj:
TargetAttributes = {
QWERTY1234567890123456 = {
DevelopmentTeam = XYZ123456;
SystemCapabilities = {
com.apple.iCloud = {
enabled = 1;
};
};
};
};
Run Code Online (Sandbox Code Playgroud)
注意添加了一个硬编码的"DevelopmentTeam = XYZ123456"; 对于这两个版本,DevelopmentTeam ID是不同的.如何自动化?一个更简单的解决方案是在调用xcodebuild之前有一个脚本来修改project.pbxproj,但我不是那个解决方案的粉丝.接下来最好的是创建一个新的"用户定义的设置",从而通过命令行传递它,但我无法弄清楚如何将用户定义的设置与嵌入在project.pbxproj中的那个DevelopmentTeam ID相关联.
通过使用sigh实用程序,我们能够处理多个 DevelopmentTeam ID,该实用程序为配置文件提供自动化。我们将其用作fastlane工具套件的一部分。
sigh --team_id <DevelopmentTeamID>
Run Code Online (Sandbox Code Playgroud)
或者作为 fastlane 自动化(Fastfile)的一部分:
sigh(team_id: "<DevelopmentTeamID>")
Run Code Online (Sandbox Code Playgroud)
在Xcode 8中,这是作为DEVELOPMENT_TEAM构建设置添加的。您可以像其他设置一样作为命令行参数传递:
xcodebuild
-sdk "iphoneos"
-project Foo.xcodeproj
-configuration "Debug"
...
DEVELOPMENT_TEAM=XYZ123456
Run Code Online (Sandbox Code Playgroud)
请参阅有关Xcode 8代码签名更改的更多详细信息:https : //pewpewthespells.com/blog/migrating_code_signing.html
我们最终创建了另一个类似调试的构建配置。在我们的例子中,它被称为“Ad-hoc”,没有特殊原因。我们的构建服务器使用企业证书进行测试构建,因此我们只需更改构建配置以具有正确的证书和团队参数,并且开发“调试”不再重要。但具有挑战性的一件事是,某些 cocoapods (fbtweaks) 没有意识到您可能正在使用不称为“调试”的配置来创建调试版本,因此必须跳过一些环节才能实现这一点正常工作。
| 归档时间: |
|
| 查看次数: |
7234 次 |
| 最近记录: |