2017-09-26 99 views
0

我在我的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 

但是這並沒有幫助

回答

1

嘗試增加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」'像這樣嗎? –

1

在我的項目,我用gradle-xcodePlugin實用。 iOS開發並不是典型的使用Gradle :),但它是相當不錯的工具。這是xcodebuild工具下的包裝。這是非常容易設置,配置在build.gradle文件。在GitHub上有足夠的文檔來設置它。它會自動構建,導出,交付給TestFlight beta測試等等。我用了一年。

總是會忘記xcodebuild -project ...的語法。只要保持這個插件是最新的。

我通過執行$ ./gradlew xcodebuild

潤大廈也許這個工具可以幫助您避免花時間與每個Xcode的更新解決的問題,因爲它沒有爲我)

1

基於錯誤看起來你的避風港在您的項目設置中未啓用自動簽名功能。當您的項目配置爲手動簽名時,無法從命令行執行一次性自動簽名生成。

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