Xcodeでプロジェクトをアーカイブすると、マルチアプリケーションバンドルが誤って作成される


170

Xcodeでプロジェクトをアーカイブすると、リリース用のメインターゲットをバンドルするのではなく、マルチアプリケーションバンドルが作成されます。具体的には、オーガナイザーでアーカイブを検証すると、次のメッセージが表示されます。

「[プロジェクト名]にはシングルバンドルアプリケーションが含まれていないか、複数の製品が含まれています。別のアーカイブを選択するか、スキームを調整してシングルバンドルアプリケーションを作成してください。」

スキームに調整が必要な設定があるようですが、他のターゲットが含まれている原因を特定できません。

ちなみに私はXcode 4.0を使用しています。


回答:


251

はい、私自身の質問に答えます。XCode 4の依存プロジェクトの問題であることが判明しました。これが発生した場合は、すべての依存プロジェクト(静的ライブラリなど)のビルド設定を確認し、[Deployment]の[Skip Install]オプションが設定されていることを確認してくださいYESへ。

詳細はこちら:http : //flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
あなたは、私のヒーローです!私はそれを簡単に見つけられなかったでしょう:P
Andrew Natoli

6
「はい」に変更しました...まだ失敗します。:(
Joe D'Andrea

8
プロジェクトやターゲットではなく、静的ライブラリでのみ、インストールのスキップを[はい]に設定する必要があります。アドホック配布に関するこのブログ投稿は、App Storeビルドにも同様に適用され、インストールのスキップに関するセクションがあります。musicalgeometry.com

8
一部のライブラリ(CorePlotなど)では、ビルドフェーズのヘッダーのコピーセクションも変更する必要があります。したがって、ライアンの答えも必ず確認してください。
Tim Swast

2
また、「静的ライブラリの」すべてのヘッダーファイルをターゲットの「ビルドフェーズ」に移動する必要があります。「ヘッダーのコピー」で、「パブリック」から「プロジェクト」に移動しました。
Hlung、2012年

151

この問題を解決するには、サブプロジェクトで2つの修正が必要です。

  1. Jaredが発見したように、ビルド設定の下で、「スキップインストール」を「はい」に設定します。
  2. ビルドフェーズで、[ヘッダーのコピー]セクションを確認します。プライベートまたはパブリックとしてリストされているヘッダーファイルがある場合は、それらをプロジェクトセクションにドラッグします。

7
本当に愛してる!:D
arielcamus

5
「インストールのスキップ」設定をすべて修正しましたが、欠けていたのはヘッダーのコピーセクションでした。ありがとうございます。
トーマス・アインウォラー

2
私はthree20を使用しています。このプロジェクトには、プライベートまたはパブリックとしてリストされているヘッダーファイルがありますが、プロジェクトセクションにそれらを移動すると、コンパイルされません。なにか提案を?
Breezeight、

19
このXcodeの問題を克服しても、Three20の使用を中止してください。真面目です!
Adam Eberbach

2
私たちのように多数のライブラリプロジェクトがあり、どのライブラリの[インストールのスキップ]が[いいえ]に設定されているか、またはどのヘッダーファイルが問題を引き起こしているのかわからない場合は、これを試してください。アーカイブを選択して[配布]ボタンをクリックします。「ビルドされた製品を保存」オプションを選択します。[次へ]をクリックして保存します。作成したディレクトリをFinderで閲覧します。「ライブラリー」サブディレクトリーは、「インストールのスキップ」を「はい」に設定する必要があるライブラリーを識別します。usr / local / includeは、PublicからProjectに移動する必要がある犯人ヘッダーファイルを識別します。
Sunil Gowda

10

私はそれを私のために機能させるために次のことをしました:

  1. three20静的ライブラリの場合、メインプロジェクト内にファイルを含めるためにcocoapodsを使用しました。three20が私に与えたすべての問題を取り除きました(そしてそれらはたくさんあります。)ところで、three20をNimbusに置き換えてみましたが、Nimbus私のプロジェクトがthree20を使用していたいくつかの機能が欠けていたので、Nimbusは役に立ちませんでした。
  2. 他のすべてのサブプロジェクト/静的ライブラリのビルド設定でスキップインストールをはいに設定し、ビルドフェーズでコピーヘッダーをパブリックからプロジェクトに切り替えました
  3. 最も重要なこと:サブライブラリの下..ビルドフェーズの下で、ファイルのコピー先がからに変更されたAbsolute pathことを確認しましたproducts directory

そしてそれはそれでした!

ヒント:アーカイブがipaではなくアーカイブファイルを作成する原因となっている問題のあるファイルについて知るには、次のようにします。

  1. アーカイブを選択し、[配布]ボタンをクリックします。
  2. 「ビルドされた製品を保存」オプションを選択します。
  3. [次へ]をクリックして保存します。
  4. 作成したディレクトリをFinderで閲覧します。
  5. 「ライブラリー」サブディレクトリーは、「インストールのスキップ」を「はい」に設定する必要があるライブラリーを識別します。
  6. 場合によってusr/local/includeは、パブリックからプロジェクトに移動する必要がある原因のヘッダーファイル、または絶対パスから製品ディレクトリに変更する必要のあるファイルを識別します。ただし、そのディレクトリ(つまり、usr / local / include)は、サブライブラリのディレクトリ構造によって異なります。

私はあなたに10個の星を与えます、私が助けたものを見つけるまで私が読んだ解決策のnr。手順6で見つけたファイルをクリックし、ターゲットメンバーシップエリアでパブリックからプロジェクトにマークを付けました。何も必要ありません。
Cristi Băluță 2013年

お役に立てて嬉しいです!私はそれを書いた理由は、あなたが何をしたかを通過したB / CIだった..私は何が起こっていたかを理解開始する前に私は多分20の答えのように読める。.. :)
abbood

誰かがステップ6を説明できますか?「usr / local / includeが原因のヘッダーファイルを識別する」の意味と、それらのファイルをどこでどのようにチェックすべきかがわかりません
Andrei F

@ CristiBăluțăどのくらい正確にファイルを見つけ、設定/メニューのどこにありますか?XCode 11.2.1でも同じ問題が発生し、xcodeの経験があまりありません。ありがとうございました。
Andrei F

私が見つけたのは、/ usr / local / includeが(ライブラリーフォルダーと共に)アーカイブ内のフォルダーであることですが、私の一般的なアーカイブにはそれらがありません
Andrei F

1

忘れていたコピーファイルのビルドフェーズがありました(一部のフォントを〜/ Library / Fontsにコピーしました)。このビルドフェーズを削除すると、問題なく動作しました。

上記のいずれの方法でも問題が解決しない場合は、アーカイブをファインダーにエクスポートして、.appバンドルの外部にあるものを確認することをお勧めします。

編集:https : //github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue :-- 'Does-not-contain-a-single-bundle 'を参照してください


0

「[プロジェクト名]にシングルバンドルアプリケーションが含まれていないか、複数の製品が含まれています。別のアーカイブを選択するか、スキームを調整してシングルバンドルアプリケーションを作成してください。」xcode5にアップグレードした後。

問題は、「リリース」のビルド設定のフィールドの多くが空白だったことです。xcode4は自動的にデバッグ設定に切り替わったと思います。

anwyays-私の修正は、空白であったすべての「リリース」設定を見つけて、それらをデバッグ設定に設定することでした。特に、Info.plistファイルの設定でした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.