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

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

问题描述:

我在我的OSX机器上安装了Xcode9。我正在使用xcodebuild命令行来签署我的应用程序,这当然使用最新的基于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工具所做的那样?

我从official documentation了解到,应该更喜欢自动签名。但如何做到这一点xcodebuild命令行

看着this discussion,我试着用sedproject.pbxproj文件上切换它。

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

但是这并没有帮助

尝试增加export_xcargs: “-allowProvisioningUpdates”,将工作

+0

在你的回答中,你能否修改与问题中相同的'xcodebuild'命令? –

+0

所以我不应该在'xcodebuild'命令中指定配置文件了? –

+0

'xcodebuild -project“MyProject.xcodeproj”-scheme“MyProject”-sdk“iphoneos”-configuration Release PROVISIONING_PROFILE =“MyProject_ProvisioningProfile”DEVELOPEMENT_TEAM =“MY_TEAM_ID”export_xcargs:“-allowProvisioningUpdates”'像这样吗? –

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

总是会忘记xcodebuild -project ...的语法。只要保持这个插件是最新的。

我通过执行$ ./gradlew xcodebuild

润大厦也许这个工具可以帮助您避免花时间与每个Xcode的更新解决的问题,因为它没有为我)

基于错误看起来你的避风港在您的项目设置中未启用自动签名功能。当您的项目配置为手动签名时,无法从命令行执行一次性自动签名生成。

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

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

由于您指定了供应配置文件,您将遇到新的供应错误。自动签名意味着您必须让XCode弄清楚所有内容。它抱怨说,如果你试图告诉它除了你的开发团队以外的任何东西。在你的情况下,你告诉xcodebuild使用哪个配置文件。但是,XCode中坚持使用团队配置曲线(S)后管理,如果告诉别人,否则会抛出了其手中的厌恶:

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下。