あなたは間違いなく.xcschemeファイルに関して正しい軌道に乗っています-自分のプロジェクトの設定中にこの問題が発生しました!
後世のために、または少なくとも検索からここにたどり着くために、ここには2つのバージョンがあります。「私は忙しいので、事実だけを言ってください」バージョンと、より複雑な議論と理論的根拠です。これらのバージョンはどちらも、ワークスペースファイルからビルドしようとしていることを前提としています。これがワークスペースベースのプロジェクトにほとんど当てはまるので、あなたがそうでない場合は私の謝罪です。
圧縮された「Fix-it」バージョン
根本的な原因は、Schemesのデフォルトの動作では、スキームが特に共有としてマークされるまで、スキームを「プライベート」に保つことです。コマンドラインで開始されるビルドの場合、Xcode UIは実行されず、xcoderunツールには、使用する独自のスキームのキャッシュがありません。目標は、Bambooで実行するスキームを生成、共有、およびコミットすることです。
- コードのクリーンな作業用コピーで、プロジェクトのワークスペースを開きます。
- 製品メニューから「スキーム」>「スキームの管理...」を選択します。
- プロジェクトに定義されたスキームのリストが表示されます。
- Bambooが実行しようとしているスキームを見つけます
- そのスキームの「共有」ボックスがチェックされていること、および「コンテナ」設定がプロジェクトファイル自体ではなくワークスペースに設定されていることを確認します。
- [OK]をクリックして、[スキームの管理]シートを閉じます。
- プロジェクトのWorkspaceName.xcworkspace / xcshareddata / xcschemesに新しい.xcschemeファイルが作成されました。
- このファイルをリポジトリにコミットし、Bambooビルドを実行します。
より深い議論と根拠
Xcode 4は、関連するXcodeプロジェクトの配線、ビルドターゲット、ビルド構成を一緒に配線するメカニズムに対処するために固有のカオスのいくつかを試して対処するのに役立つ方法として、ワークスペースとスキームを導入しました。ワークスペース自体には、そこに含まれるデータの小さな「ボックス」のそれぞれを記述する独自の構成データのセットがあり、.xcodeprojファイルをアタッチするためのスケルトンとして機能し、各開発者マシンまたはCIシステムにミラーリングされる共有構成データのセットです。 これはワークスペースの威力と落とし穴の両方です-1)100%正しく構成されているが、間違ったコンテナーに入れられるか、2)正しいコンテナーに入れられますが、不適切に構成されてデータをレンダリングする多くの方法がありますシステムの他の部分からはアクセスできません!
Xcode 4スキームのデフォルトの動作では、プロジェクトがワークスペースファイルに追加されると、新しいスキームが自動的に生成されます。いくつかの.xcodeprojファイルを追加した人は、特にプロジェクトファイルが追加されてから削除され、同じワークスペースに再度追加されると、スキームリストがすぐに手に負えなくなることに気づいたかもしれません。自動生成または手動で作成されたすべてのスキームは、.xcuserdataファイルがプロジェクトのデータと構成でコミットされている場合でも、デフォルトで現在のユーザーにのみ表示される「プライベート」スキームになります。これが不可解なビルドエラーの根本的な原因ですBambooがxcodebuildから報告します-BambooはXcode UIではなくコマンドラインを介してビルドを操作するため、Schemesが自動的に生成され、それらのみに依存する機会がありませんワークスペース自体で定義されます。
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuildは、<'workspace'パラメータ値> / xcshareddata / xcschemesに存在するファイル<'scheme'パラメータ値> .xcschemeを探します。
明らかに、Bambooとワークスペースの両方を構成する方法はたくさんあります。そのため、固有の構成がここに示されているものに100%マッピングされない場合があることに注意してください。重要なポイント:
- Xcode UIが魔法のように処理する特定の自動化タスクは、Xcodebuild CLIでは使用できません。
- 「コンテナー階層」の多くの場所にスキームとビルド構成データをアタッチできます-データが適切なコンテナー(ワークスペース、プロジェクト、および/またはビルドターゲット)に配置されることを確認してください
- コンテナ階層のどこでxcodebuildツールが構成データを探しているかを検討してください。どこから探し始めるかを示す優れた指標は、「-workspace」または「-project」引数の使用に基づいています。
「共有」ボックスはすでにチェックされています。
自分のBambooインスタンスで同じ問題が発生しました。私のリポジトリでコミットされたスキームは古く、最新バージョンのコマンドラインツールはそれを適切に処理していないことがわかりました。これは以前から存在していたため、設定を調べて、スキームに目立ったカスタムがないことを確認し、スキームを削除して再作成して、「共有」としてマークし、新しい.xcschemeファイルをリポジトリ。
すべてが問題なく見えて再構築しても問題が解決しない場合は、そのコンテナ設定を再確認してください。そのスキーマを階層内の間違ったコンテナにアタッチするのは本当に簡単です!