[英]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 :創建一個包含以下詳細信息的文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.