xcode 8 xcodebuild 从命令行对多个配置文件进行手动代码签名

Posted

技术标签:

【中文标题】xcode 8 xcodebuild 从命令行对多个配置文件进行手动代码签名【英文标题】:xcode 8 xcodebuild manual code signing from command line for multiple provision profiles 【发布时间】:2016-12-02 03:13:20 【问题描述】:

在 Xcode 7 中,我使用以下命令通过命令行为多个配置文件构建项目。我有多个配置文件和链接到这些配置文件的多个代码签名证书,因此我需要使用适当的配置文件签署 IPA 文件。

PROVISION_PROFILE="My Provision profile name"

xcodebuild -workspace ../ProjectName.xcworkspace -scheme "$PRODUCT_NAME" -sdk iphoneos -configuration "$CONFIGURATION" archive -archivePath "$TARGET_BUILD_DIR/$PRODUCT_NAME.xcarchive"

xcodebuild -exportArchive -archivePath "$TARGET_BUILD_DIR/$PRODUCT_NAME.xcarchive" -exportPath "$BINDIR/$PACKAGE_NAME-$CURVERSION.ipa" -exportProvisioningProfile "$PROVISION_PROFILE"

现在这些命令不适用于 Xcode 8。我取消选中自动管理签名之后它给出以下错误

“someProjectName”需要配置文件。在项目编辑器中为“调试”构建配置选择一个配置文件。 SDK“ios 10.1”中的产品类型“应用程序”需要代码签名 任何人都请帮助我。

【问题讨论】:

您能否在 Xcode 的项目目标设置中的 General->Signing 下添加“签名”部分的截图?听起来您的调试配置没有在项目文件中设置配置文件。 对,我没有在该部分添加配置文件,因为我想从命令行构建它。因为我有多个用于不同配置的配置文件,所以我需要从命令行传递它们。你知道如何从命令行传递它们吗? @kgaleman 是否有必要从项目编辑器传递此信息? 【参考方案1】:

您只是在 -exportArchive 命令中指定配置文件。在-workspace 命令中,Xcodebuild 进入您指定的-scheme,它查看project.pbxproj 文件并获取您从项目编辑器中放置的配置文件,以获取由正在构建的方案指定的配置。

如果您在文本编辑器中打开 project.pbxproj 文件,您会看到调试配置没有列出任何配置文件,这就是 Xcodebuild 抛出此错误的原因。要解决此问题,请在项目编辑器(或 project.pbxproj)中为您的方案构建的配置添加您的配置文件。

编辑:现在我更好地理解了要求,用另一个选项编辑我的答案。您也可以这样做以在构建步骤中手动指定配置文件:

xcodebuild -workspace ../ProjectName.xcworkspace -scheme "$PRODUCT_NAME" -sdk iphoneos -configuration "$CONFIGURATION" archive -archivePath "$TARGET_BUILD_DIR/$PRODUCT_NAME.xcarchive" PROVISIONING_PROFILE="$PROVISION_PROFILE"

【讨论】:

在项目编辑器中添加配置文件修复了抛出此错误的问题。我对不同的客户有不同的配置文件,所以我想在下一步替换这个配置文件。 -exportProvisioningProfile 是否在下一步工作并替换默认配置文件? 感谢您的澄清,@Guarav!我已经用另一个选项为您编辑了我的答案。让我知道这是否有效。 在归档之前,我还没有在我的问题中添加一个步骤 xcodebuild -workspace project.xcworkspace -configuration Debug -scheme Release-something clean build -destination generic/platform=iOS 如果我添加 PROVISIONING_PROFILE ="$PROVISION_PROFILE" 在此命令中然后存档失败。 xcode 在什么时候需要这些配置文件?在构建时或归档时或签名时? @Guarav,当我们看不到您在构建中遵循的全套步骤以及您收到的错误文本时,这很难调试。配置配置文件和代码签名非常棘手,文档不是很清楚,因此我们可以获得的信息越多越好。

以上是关于xcode 8 xcodebuild 从命令行对多个配置文件进行手动代码签名的主要内容,如果未能解决你的问题,请参考以下文章

使用 xcodebuild 从 archive 导出 ipa

如何让 Xcode 8 从命令行自动生成配置文件?

使用 swift 2.3 从 xcode 8 中的命令行运行 xcode ui 测试

xcodebuild 比 Xcode 慢得多?

Xcode 9:xcodebuild -exportArchive 错误读取文件:info.plist

Xcode 4 UI 可以很好地构建应用程序,但命令行 xcodebuild 在代码签名时失败