web-dev-qa-db-ja.com

Xcode 4 + iOS 4.3:「アーカイブのタイプに対応するパッケージャーはありません」

Xcode 4にアップグレードし、以前のプロジェクトのアドホックビルドを作成しようとしています。 「アーカイブ」オプションを使用するたびに、オーガナイザウィンドウにアーカイブがまったくない状態になるORアーカイブがありますが、.ipaとしてパッケージ化するオプションはありません。 「このタイプのアーカイブにはパッケージャが存在しません」。

Xcode 3.2から移行されたプロジェクトのために、Xcode 4でアドホックビルドが動作している人はいますか?

76
Elver Loho

メインプロジェクト内にいくつかのリンクされたプロジェクト(ライブラリなど)がある場合があります。これらのプロジェクトのビルド設定に移動し、設定「スキップインストール」(展開カテゴリ)を「はい」に設定しますが、メインプロジェクトの「スキップインストール」は「いいえ」のままにします。ビルド、アーカイブすると、ipaパッケージを選択できるはずです。

134
user662105

おかげで、プロジェクトフレームワークの問題を段階的に解決するには、3つのステップが必要でした。

  1. すべての依存関係プロジェクトについて、ターゲットビルド設定/「インストールのスキップ」プロパティを「はい」に設定します

  2. すべてのプロジェクトのターゲットビルド設定の「インストールディレクトリ」プロパティをクリアする

  3. すべてのプロジェクトについて、「ビルドフェーズ/ビルド設定/ヘッダーのコピー」セクションからすべてのヘッダーをパブリック/プライベートプロジェクトに移動します。

25
PixelEdn

これらの回答の組み合わせが問題を解決することがわかりました。リンクされたすべてのプロジェクトで[インストールのスキップ]が[はい]に設定されているかどうかを確認するのに多くの時間を費やしましたが、それは私にとっては問題の一部にすぎませんでした。アーカイブでこの問題が発生している場合は、次の手順に従ってください。

  1. オーガナイザでアーカイブを探し、右クリックして[Finderに表示]を選択します。
  2. Finderで.xcarchiveファイルを右クリックし、[パッケージの内容を表示]を選択します。
  3. 製品フォルダーを見つけて、その内容を確認します。 ProductsフォルダーにはApplicationsフォルダーのみが存在し、Applicationsフォルダーには1つのiPhoneアプリ(YourProject.app)のみが含まれている必要があります。

手順3で静的ライブラリ(<some-library> .a)がProductsの直下またはサブフォルダーにある場合は、Xcodeに移動して、静的ライブラリを生成したプロジェクトを選択します(どのプロジェクトかを確認できるはずです)静的ライブラリの名前に基づいています)。ビルド設定に移動してターゲットを選択し、「インストールのスキップ」を「はい」に設定します。

手順3で、ヘッダーファイル(<some-header> .h)がProductsの直下またはサブフォルダーにある場合は、Xcodeに移動し、それらのヘッダーを含むプロジェクトを選択します。ヘッダーファイル名に使用されているプレフィックスに基づいてプロジェクトを検索できるはずです。そのプロジェクトで、ビルドフェーズに移動し、[ヘッダーのコピー]セクションで、すべてのヘッダーを[パブリック]セクションと[プライベート]セクションから[プロジェクト]セクションに移動します。

この答えこの答えこの答え の解決にご協力いただきありがとうございます。

9
Josh Brown

この問題に役立つと思われる他の2つのヒントを次に示します...答えではありませんが、他の誰かが8 /

Xcode4によってビルドされていない静的ライブラリを使用している場合、「展開->スキップインストール」の回避策はそれらに対しては機能しません。そのための回避策は、それらをプロジェクトに追加せず、それらのパスがビルド設定のヘッダーまたはライブラリ検索パス、あるいはその両方にあること、および-lblahエントリがリンカーフラグに追加されていることを確認することです。

また、静的依存ライブラリをターゲット依存関係として設定している場合(たとえば、libjson.aをこのように設定していて、それが正しい/論理的なことであると確信している場合)、. ipaをビルドできなくなります何があっても。私たちはこの愚かな問題に丸一日踊り回りましたが、結局これを取り除くだけで解決しました。個人的にはこれは本当に壊れたプロジェクトを残すべきだと思います...しかしそれはとてもうまくいきます。

5
roBman

Xcodeが適切なアーカイブを作成できない原因となっているプロジェクト/ライブラリ/コンポーネントを特定するには、次のようにします。

オーガナイザでアーカイブを見つけ、右クリックしてFinderに表示します。 .xcarchiveファイルが表示されます。右クリックして、パッケージの内容を表示します。次に、Productsフォルダーを確認します。最も可能性が高いのは、1つのiPhoneアプリケーションが含まれるアプリケーションフォルダーだけではありません。

私の場合、libOAuthConsumer_iPhone.aを含むusr/local/libフォルダー構造があり、Xcodeでそれを検索したところ、確かにSkip InstallをYESに設定していない別のプロジェクトを見つけました。誰にとってもそれほど簡単なことではないかもしれませんが、パッケージの内部を見ると、少なくともアーカイブコンポーネントをめちゃくちゃにしているコンポーネントに関するポインタがわかるはずです。

これらはxcode 4.2で上記の問題を解決するための手順です

1:追加されるすべての3番目のパーツライブラリについて、「インストールをスキップ」をYESにします。プロジェクトの[インストールをスキップ]をNOに設定します。ビルド設定から[インストールをスキップ]にアクセスできます。

2:左側のナビゲーターペインからサードパーティライブラリのヘッダーを選択します。

2.1:右側はUtililtesペインです。表示->ユーティリティ->ユーティリティの表示/非表示(command-Option-0)またはツールバーのビューセグメント化されたコントロールの3番目のボタンで表示および非表示にします。

2.2:ファイルインスペクターの選択(コマンドオプション1)

2.3ターゲットメンバーシップを選択し、オプションを「プロジェクト」にパブリックまたはプライベートから変更します

1
IKKA

スキップインストールが機能しませんでした。パブリックとしてマークされたすべてのヘッダーをプロジェクトに移動するこの問題を解決しました。私は現在、静的libとipad projを使用してワークスペースで作業しています。リンクされたプロジェクトで製品をビルドしたいときはいつでも、xcodeにバグまたは何かがあるようです。xcodeは両方をビルドし、Organizerはipaを共有するオプションを表示しません。

1
Diego Marafetti