我有一個古怪的問題。xcodebuild說不包含計劃
我有一個項目,我一直在構建從XCode IDE,它工作得很好。現在我正在建立Bamboo來構建項目,並且正在從命令行構建它。
問題是,如果我檢查我的代碼出GIT,然後使用xcodebuild來構建它它說該方案找不到,但如果我打開該項目,它建立,如果我然後嘗試再次構建它從命令行使用相同的命令,它的工作原理。
當我打開項目或者我在做一些愚蠢的事情時,XCode會做些什麼神奇的事情,也許我不應該在我的.gitignore中排除一個文件?
我有一個古怪的問題。xcodebuild說不包含計劃
我有一個項目,我一直在構建從XCode IDE,它工作得很好。現在我正在建立Bamboo來構建項目,並且正在從命令行構建它。
問題是,如果我檢查我的代碼出GIT,然後使用xcodebuild來構建它它說該方案找不到,但如果我打開該項目,它建立,如果我然後嘗試再次構建它從命令行使用相同的命令,它的工作原理。
當我打開項目或者我在做一些愚蠢的事情時,XCode會做些什麼神奇的事情,也許我不應該在我的.gitignore中排除一個文件?
好吧,我後來才知道其2-分鐘,但我發現了另一個堆棧溢出,上面寫着該方案必須被設置爲共享... Where does Xcode 4 store Scheme Data?
不錯,對我有好處,謝謝 – zest
你肯定是在正確的軌道上關於.xcscheme文件 - - 在設置我自己的項目時出現此問題!
對於後人,或者至少任何人通過搜索來到這裏,這裏有兩個版本的東西 - 「我很忙,所以只是事實請你」的版本和更深入的討論和理由。這兩個版本都假設您正在嘗試從Workspace文件構建;如果你不是那麼我的道歉,因爲這主要適用於基於工作區的項目。
冷凝'修復,這是版本
的根本原因是計劃的默認行爲是保持方案「私人」,直到它們被明確標記爲共享。在命令行啓動構建的情況下,Xcode UI永遠不會運行,並且xcoderun工具沒有自己的緩存可供使用。我們的目標是生成,共享和提交您希望Bamboo運行的方案:
更深入的討論和理由
的Xcode 4中引入工作空間和方案,以此來幫助嘗試制服一些所固有的處理電路相關的Xcode項目的機制混亂,構建目標,並一起構建配置。工作空間本身有自己的一組配置數據,用於描述它包含的每個較小的「數據箱」,並用作附加.xcodeproj文件和一組共享配置數據的框架,該配置數據鏡像到每個開發人員機器或CI系統。這既是工作空間的威力又是缺陷 - 有很多方法可以使事物正確配置100%,但放入錯誤的容器或2)放入正確的容器,但配置不當,因此呈現系統其他部分無法訪問數據!
Xcode 4方案的默認行爲是在項目添加到工作區文件時自動生成新方案。那些已經添加了幾個.xcodeproj文件的人可能已經注意到,您的方案列表很快變得不守規矩,尤其是在項目文件被添加,然後被刪除,然後被讀取到同一個工作區中時。即使在使用項目數據和配置提交.xcuserdata文件時,所有自動生成或手動創建的方案都默認爲僅爲當前用戶可見的「私人」方案。這是構建錯誤的根本原因來自xcodebuild的Bamboo報告 - 由於Bamboo通過命令行操作構建而不是Xcode UI,所以它沒有機會自動生成Schemes並僅依賴於那些在工作區本身中定義。假設你已經配置使用竹子這樣的命令從工作區來建立:
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuild聯編去尋找文件<「方案」參數值> .xcscheme現有的<「工作區」參數值>/xcshareddata/xcschemes。
顯然有很多方法可以配置Bamboo和工作區,所以請記住,您的獨特配置可能無法將100%映射到此處顯示的內容。關鍵要點:
「共享」框已經被選中......現在什麼?
我在我自己的Bamboo實例中遇到了同樣的問題;事實證明,我在存儲庫中提交的方案已經過時,最新版本的命令行工具沒有正常處理它。由於此前已存在,因此我仔細查看了設置,確保沒有任何關於該方案的明顯定製,刪除並重新創建該方案,確保將其標記爲「共享」,並將新的.xcscheme文件重新發送給庫。
如果一切看起來不錯並重建它不能解決問題,請仔細檢查容器設置 - 將該方案附加到層次結構中的錯誤容器上真的很容易!
大部分答案都會建議您使用Xcode共享您的方案,然後提交更改回購。這當然有效,但前提是您有權訪問源代碼並有權進行更改以及其他一些假設。
但有一批「什麼IFS」考慮
紅寶石& xcodeproj寶石
我會建議使用xcodeproj紅寶石的寶石。 這是一款非常酷的開源工具,可以幫助您自動執行大量與Xcode相關的任務。
順便提一句,這是CocoaPods用來解決Xcode項目和工作區問題的寶石。
所以安裝
sudo gem install xcodeproj
然後寫一個簡單的Ruby腳本重新共享所有的方案,創業板recreate_user_schemes爲此
#!/usr/bin/env ruby
require 'xcodeproj'
xcproj = Xcodeproj::Project.open("MyProject.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save
方法並不只是複製方案文件形成用戶的文件夾到xcshareddata/xcschemes,它也創建這些文件首先解析pbxproj文件。
如果其他人絆倒了這一點,似乎'recreate_user_schemes'不能正確處理測試目標。我已經提交了[關於它的錯誤報告](https://github.com/CocoaPods/Xcodeproj/issues/139)。 –
我對此進行了博客。 http://nsbogan.com/xcode/2014/05/29/share-xcode-schemes/。不幸的是,單元測試的問題仍然沒有解決。 – i4niac
好吧,我試過這個解決方案。但是當我運行'xcodebuild -project Finance.xcodeproj -scheme「Finance」-configuration釋放乾淨的存檔CODE_SIGN_IDENTITY =「我的標識」'我得到了'Scheme
調試的問題是這樣的:
xcodebuild -list
,或者如果您使用的是工作區(例如帶豆莢)
xcodebuild -workspace MyProject.xcworkspace -list
如果方案未列出修復,像這樣:
使計劃共享允許他們在'xcodebuild -list'中顯示...謝謝! –
該方案缺失的一個常見原因是忘記推對原點的承諾。如果您收到遺漏的計劃消息,則應首先驗證該計劃是否已共享,然後確認您已提交更改並將其推送到原始服務器。
得到了同樣的問題,但在建設與Xcode作爲主要子項目。在xcode standalone中構建子項目 - 之後,此錯誤消失。
我在執行CI時遇到了這個錯誤。除了我使用Gitlab自己的CI工具外,上述問題與我的問題完全相同。您可以檢查Bamboo中是否存在此類文件。
我通過對gitlab-ci.yml
文件進行了一些更改來解決它。
當你通過分享製作你的scheme
後。在Xcode轉到Products>Scheme>Manage Scheme
並檢查共享。
變化
Set absolute path everywhere.
eg.xcodebuild clean archive -archivePath /path/to/your/project/build/testDemo -scheme testDemo | xcpretty
here you need to change/path/to/your/project/
with your path andtestDemo
with your project name.
就注意到,當我打開該項目在Xcode是創建一個.xcscheme文件,但在xcuserdata/username.xcuserdatad文件夾...但我不知道爲什麼方案在用戶文件夾下面生成'生成'..以及我如何處理竹子 –