如何使用 xcodebuild 命令行使用 Xcode9 进行自动签名?



我的OSX机器上安装了Xcode9。我正在使用xcodebuild命令行对我的应用程序进行签名,当然它使用最新的基于 Xcode9 的逗号工具。

以下是我尝试对应用程序进行签名的方式:

xcodebuild -project "MyProject.xcodeproj" -scheme "MyProject" -sdk "iphoneos" -configuration Release PROVISIONING_PROFILE="MyProject_ProvisioningProfile" DEVELOPEMENT_TEAM="MY_TEAM_ID"

但是,它给出了以下错误。

Code Signing Error: Provisioning profile "profile_name" is Xcode managed, but signing settings require a manually managed profile.
Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.0'

但是当我使用 Xcode9 UI IDE 选择">自动签名"进行构建时,它可以工作。我想使用xcodebuild命令行复制相同的内容。

我读到安装了 Xcode 9,我们可以像 Xcode UI 一样从命令行进行自动签名。

问:
我应该如何修改xcodebuild命令以执行自动签名,就像在基于 Xcode UI 的工具上一样?

我从官方文档中了解到,人们应该更喜欢自动签名。但是如何使用xcodebuild命令行执行此操作

查看此讨论,我尝试使用sedproject.pbxproj文件上切换它。

sed -i '' 's/ProvisioningStyle = Manual;/ProvisioningStyle = Automatic;/' <ProjectName>.xcodeproj/project.pbxproj

但这并没有帮助

根据错误,您似乎尚未在项目设置中启用自动登录。将项目配置为手动签名时,无法从命令行执行一次性自动签名生成。

在 XCode 中打开项目后,在左侧的项目导航器中选择根项目。单击要配置的目标。单击常规选项卡。在"签名"部分中,勾选"自动管理签名"复选框。您还必须选择一个开发团队。如果您有多个目标,则可能需要对所有目标重复这些步骤。

完成此操作后,XCode 将自动创建、管理和使用团队预配配置文件。-allowProvisioningUpdates告诉xcodebuild执行与XCode IDE隐式执行的相同的配置管理。请注意,这些配置文件在开发门户中对你不可见。

你将遇到新的预配错误,因为你正在指定预配配置文件。自动签名意味着您必须让XCode弄清楚所有事情。如果你试图告诉它除了你的开发团队之外的任何事情,它会抱怨。在你的例子中,你告诉xcodebuild要使用哪个预配配置文件。但是XCode坚持使用它管理的团队配置文件,如果被告知其他情况,他们会厌恶地举手:

Code Signing Error: MyProject has conflicting provisioning settings. MyProject is automatically signed, but provisioning profile MyProject_ProvisioningProfile has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor, or switch to manual signing in the project editor.

我们用于使用自动预配进行构建的xcodebuild命令如下所示:

xcodebuild -configuration Release PLATFORM_NAME=iphoneos SDKROOT=iphoneos11.2 -project myproject.xcodeproj -allowProvisioningUpdates build

在此基础上,在项目设置中启用自动登录后,请尝试此版本的命令:

xcodebuild -project "MyProject.xcodeproj" -scheme "MyProject" -sdk "iphoneos" -configuration Release DEVELOPEMENT_TEAM="MY_TEAM_ID"

需要注意的另一件事是,除非在本地找不到托管预配配置文件,否则xcodebuild不会更新它们。在我们的 CI 服务器上,我们有一个预构建步骤,删除它们以强制刷新。XCode 将其托管配置文件存储在~/Library/MobileDevice/Provisioning Profiles下。

尝试添加export_xcargs:"-allowProvisioningUpdates">,这将起作用

在我的项目中,我使用 gradle-xcodePlugin 实用程序。对于 iOS 开发来说,使用 Gradle :) 并不常见,但它是相当不错的工具。它是xcodebuild工具下的包装器。它非常容易设置,配置在build.gradle文件中。GitHub 上的文档足以设置它。它会自动构建,导出,交付给TestFlight测试等。我用了一年。

您将永远忘记xcodebuild -project ...的语法。只需使此插件保持最新即可。

我通过执行$ ./gradlew xcodebuild来运行构建

也许这个工具可以帮助你避免花时间解决每个Xcode更新的问题,就像它对我所做的那样;)

xcodebuild -project -scheme WebDriverAgentRunner -destination id=7b7ba65e1f3bbb87460aef17866efe6f6e473c24 -configuration release -xcconfig -allowProvisioningUpdates build-for-test

XCODE 配置文件:创建一个包含以下详细信息的文件

  • DEVELOPMENT_TEAM = "MY_TEAM_ID">
  • CODE_SIGN_IDENTITY = iPhone 开发者

最新更新