簡體   English   中英

如何使用xcodebuild命令行對Xcode9進行自動簽名?

[英]How to use xcodebuild command line to do automatic signing with 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命令行執行此操作

查看此討論 ,我嘗試使用sed將其切換到project.pbxproj文件。

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

但這沒有幫助

根據該錯誤,您似乎尚未在項目設置中啟用自動簽名。 將項目配置為手動簽名時,無法從命令行執行一次性的自動簽名生成。

在XCode中打開項目后,在左側的Project Navigator中選擇您的根項目。 單擊您要配置的目標。 單擊常規選項卡。 在“簽名”部分中,選中“自動管理簽名”復選框。 您還必須選擇一個開發團隊。 如果您有多個目標,則可能需要對所有目標重復這些步驟。

完成此操作后,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 beta測試等。 我用了一年。

您將永遠忘記xcodebuild -project ...語法。 只要保持此插件為最新。

我通過執行$ ./gradlew xcodebuild運行構建

也許這個工具可以像您為我所做的那樣,幫助您避免花費時間來解決每次Xcode更新的問題;)

xcodebuild -project -scheme WebDriverAgentRunner -destination id = 7b7ba65e1f3bbb87460aef17866efe6f6e473c24-配置發布-xcconfig -allowProvisioning更新測試構建

XCODE CONFIG FILE :創建一個包含以下詳細信息的文件

  • DEVELOPMENT_TEAM =“ MY_TEAM_ID”
  • CODE_SIGN_IDENTITY = iPhone開發人員

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM