アプリケーションからiOSアプリアーカイブを生成する際に問題が発生しました。アプリケーションは問題なくコンパイルされ、シミュレーターでも動作します。今、私はアドホックテストを行いたかったのですが、iOSアプリアーカイブを生成できません。[製品]->[アーカイブ]をクリックすると、一般的なxcodeアーカイブが生成されます。誰かが私を助けることができますか?私はすでにこのアプリケーションのiOSアプリアーカイブを生成していることを言及する必要があります。なんらかの理由でiOSアーカイブの生成を停止しました。どうもありがとう。
40 に答える
ビルド設定を確認します。
- メインプロジェクトターゲットのインストールをスキップすることはできません
- フレームワーク(サブプロジェクト)ターゲットの場合、インストールのスキップはYESです
- サブプロジェクトのビルドフェーズでは、コピーヘッダーはパブリックではなくプロジェクトにある必要があります(静的ライブラリをビルドする場合は適用されません)
- 展開中のインストールディレクトリは有効です(/アプリケーションなど)
これは、フレームワーク/ライブラリを追加した場合に発生する可能性があります...そのライブラリの[ターゲット]-> [ビルド設定]を編集し、[インストールをスキップ]設定を[はい]に設定する必要があります。再アーカイブすると、XCodeは「一般的なxcodeアーカイブ」ではなく「iOSアプリアーカイブ」の作成を再開する必要があります。
[インストールをスキップしてはい]に加えて、アプリプロジェクト内で別のlib / frameworkプロジェクトを開いた場合は、ビルドフェーズ/ヘッダーのコピーでヘッダー(存在する場合)をパブリックからプロジェクトに移動する必要があります。
私はそれが私のために働くようにするために次のことをしました:
- 私はthree20静的ライブラリを持っていました。メインプロジェクト内にファイルを含めるためにcocoapodsを使用しました
- 他のすべてのサブプロジェクト/静的ライブラリのスキップインストールに従い、上記のようにコピーヘッダーをパブリックからプロジェクトに切り替えました
- 最も重要なこと:プロジェクトが使用する各ライブラリで、ビルドフェーズ->ファイルのコピーに移動し、宛先
Absolute path
がからに変更されていることを確認しますproducts directory
。注:このエラーの原因となっているライブラリを見つけるために検索を絞り込むには、以下のヒントを参照してください。
それだけです!
ヒント:アーカイブがipaではなくアーカイブファイルを作成する原因となっている問題のあるファイルを把握するには、次のようにします。
- アーカイブを選択し、[配布]ボタンをクリックします。
- [ビルドされた製品を保存]オプションを選択します。
- [次へ]をクリックして保存します。
- Finderで作成したディレクトリを参照します。
- 'libraries'サブディレクトリは、SkipInstallをYesに設定するために必要なライブラリを識別します。
- 場合によって
usr/local/include
は、パブリックからプロジェクトに移動する必要のある原因ヘッダーファイル、または絶対パスから製品ディレクトリに変更する必要のあるファイル(またはスキップインストールをyesフラグに設定するのを忘れたファイル)を特定します。ただし、そのディレクトリ(つまり、usr / local / include)は、サブライブラリのディレクトリ構造によって異なります。多くの場合、上記の手順3の[ファイルのコピー]の下にリストされているすべてのファイルがここに表示されます。ここでそれらを見つけた場合、問題の原因に対する明確な答えがあります。
ヒントへの更新:生活をさらにシンプルにするために..上記のヒントのステップ4で表示されるファイルはすべて、xcodeのグローバル検索で検索するだけです。たとえば、必要な結果がすぐに得られるはずです。これは私のフォルダのコンテンツでした(上記のヒントの手順に従ってください):
だから私はそれがcryptoとsslライブラリと関係があると言うことができました..それらを検索する:
スキップインストールをyesに設定するのを忘れていることに気づきました。
アーカイブをエクスポートする場合は、アーカイブを開いて/urs/local/include
、製品で次の提案を試してください。
各ポッドの、の下
Packaging
、Private Headers Folder Path
およびPublic Headers Folder Path
はに設定されてい/usr/local/include
ます。それらをクリアすると、有効なアーカイブが得られます。
0.11.0
React NativeアプリをXcode7
とCocoaPodsにアップグレードした後、私のために働きました0.39.0.beta.4
。
WatchKitまたはTodayExtensionと同様にCocoaPodsを使用している場合、CocoaPodsリポジトリに問題が何であるかを説明する未解決の問題があります。
私にとっての解決策Copy Pod Resources
は、の下のWatchKitExtensionおよびTodayExtensionターゲットからフェーズを削除することでしたBuild Phases
。これを実行すると、プロジェクトは期待どおりにコンパイルおよびアーカイブされました。
これが誰かを助けることを願っています、これは私を丸一日困惑させました!
上記の回答のいずれかが機能しない場合、問題はおそらく。にありcocoaPods
ます。最新のアップデート0.38.1
は私にとって物事を台無しにしました、しかしそれから私はダウングレードし0.37.1
て物事は通常に戻りました。使用するXcode 6.3.1
後で編集:に更新する0.38.2
と、これも修正されます。この問題の原因についての詳細はこちら:Cocoapods0.38.1は有効なアーカイブを作成できませんでした
私はXcode5を使用していて、それを並べ替えたのはビルドスキームの編集でしたが、上記の提案をすべて試してみても、私の場合は役に立ちませんでした。
「App」と「AppFREE」の2つのターゲットがありました。一般的なアーカイブに関する問題は、アプリの「通常の」バージョンの後に追加した無料バージョンをアーカイブしようとしたときに発生しました。私の場合、ツールバーでそのスキームを選択し、[スキームの編集]を選択すると、[ビルド]セクションに2つのターゲット、つまりAppとAppFREEがあることがわかりました。
Appのすべての列のチェックを外し、App FREEの列のみをチェックしたままにして、[OK]をクリックしました。次回、[製品]> [アーカイブ]を選択したときに、汎用アーカイブではなくアプリを無料で入手しました。:)
プロジェクトが1つしかない場合は、このソリューションが役立つかもしれません。この問題は、ターゲットを複製したときに発生しました。その結果、2つのターゲットを並列に構築しました。これが問題の原因でした。汎用IOSアーカイブが構築されました。
ビルドされたパラレルをオフにするには、
- スキームを管理し、
- スキームの編集、
- 建てる、
- 他のターゲットを削除します。
iOS9とXcode7にアップデートした後、この問題が発生しました。JoshHのソリューションは私のために機能しました。
各ポッドの[パッケージ]で、[プライベートヘッダーフォルダーパス]と[パブリックヘッダーフォルダーパス]が/ usr / local/includeに設定されています。それらをクリアすると、有効なアーカイブが得られます。
これを自動的に行うために、Podfileのインストール後のスクリプトも作成しました。
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""];
config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""];
end
end
end
Podfileの下部に追加して、実行するだけです。pod install
この問題が発生しました。私の場合、iOSアプリの依存関係としてMacアプリのターゲットを維持することが原因でした。
このように設定された理由は、MacアプリがiOSアプリのデータを生成するために使用されるツールであり、そのデータがバンドルに含まれていたためです。
iOSアプリ自体のビルドを作成する前に、その依存関係を削除し、ツールを個別にビルドする必要がありました。
私のシナリオでは、主にObjective-CプロジェクトにSwiftコードを含め始めて初めて、誤った「GenericArchive」を取得していました。Xcodeが吐き出しているアーカイブファイルのトラブルシューティングと調査を何度も行った後、SwiftSupport
フォルダ(Swiftランタイムに必要なdylibを含む)が、バニラの新しいSwiftプロジェクトアプリアーカイブとは別の場所にあることに気付きました。 。
Installation Directory
ビルド設定を見つけて、プロジェクトでカスタムパスに設定されていることに気付きました。私はそれを削除し(一般的な値のに設定/Applications
)、次のビルド->アーカイブは期待どおりに機能し、適切なiOSアプリアーカイブを提供しました。
TL; DR:アプリにSwiftコードを含める場合、特に予期しないレガシービルド設定がある可能性のある古いプロジェクトファイルで開始する場合は、Installation Directory
ビルド設定がデフォルト値に設定されていることを確認してください。/Applications
ワークスペースに複数のプロジェクト(GTL、ポッド、およびメインプロジェクト)があり、これが私にとってうまくいったことです。
プロジェクトを選択します。そこには2つのタイプがあり、プロジェクトとターゲットがあります。
あなたの主なものではないプロジェクトの場合GTL
またはPODS
:
プロジェクト:
Skip Install = NO
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""
ターゲット:
Skip Install = YES
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""
メインプロジェクト(通常は製品名と同じ名前)の場合:
プロジェクト:
Skip Install = NO
Installation Directory = /Applications
ターゲット:
Skip Install = NO
Installation Directory = /Applications
各プロジェクトとターゲットのiOSデプロイメントターゲットをチェックして、それらがすべて同じであることを確認します。
同じ旅から他の人を救うためにこれをここに残します。
ワークスペースの静的ライブラリターゲットからも同じCopyPodResourcesビルドフェーズを削除する必要があることがわかりました。
アレックスLの答えへの追加。
ポイント3.「ビルド設定」->「パブリックヘッダーフォルダパス」を「include/xxx」に変更することもできます。
上記のどれもあなたを助けなかったなら...長い時間の後に.......
バンドルバージョンショート1.0だけで十分満足していたので、バンドルバージョンのInfo.plistの値を削除しました。悪い。これをしないでください。
*実際には、右側のUIで編集して、Info.plistファイルに空のキーが配置されることに気付かずにこれを行ったことに注意してください。それは無効になると思います。私のバンドルはアーカイブ中に他のアイテムとして表示され、アイコンがなく、どこにもアップロードできませんでした。
これは、Info.plistの無効な値に要約されます。有効なアーカイブでない場合は、古いアーカイブを解凍し、現在のアーカイブをドロップイン/上書きして、アーカイブを再構築するときに修正されるかどうかを確認してください。
ビルド設定に移動して追加します
yourAppName / Resources/dist.plistからコード署名資格へ
iOSデバイスまたはビルドターゲットとして選択された実デバイスでcmd+Bを押します
完了したら->[Products]フォルダーまでスクロールし、yourAppName.appを右クリックします
「Finderに表示」を選択します
Name Payload(大文字の「P」)でフォルダを作成します
yourAppNameをペイロードフォルダにコピーします
ペイロードフォルダからzipを作成します
zipの名前をyourAppName.ipaに変更します
終わり
ほぼすべてを試した後:
- クリーン、アーカイブ
- DerivedData、アーカイブを削除します
- Xcodeを再起動します(私はXCode7を使用していました)、アーカイブ
- 上記の組み合わせ...
次に、ブートパーティションが「空きディスク容量が少ない」ことに気づきました...約1GB程度。再起動した後、約18GBが解放されました。
次に、Xcodeとプロジェクトを開き、アーカイブを実行しました...そして驚くべきことに(アーカイブを構築しようとして1時間後)、ついに非ジェネリックアーカイブを取得しました。
それを修正した空きディスクの問題なのか、それを修正したmacOSの再起動なのかはわかりませんが、私にとってはうまくいきました。
[プロジェクト]>[ターゲット]>[ビルドフェーズ]>[ターゲットの依存関係]に.xcodeprojファイルがある場合は、そこからファイルを削除してから、ipaをビルドします。わたしにはできる。乾杯
ここで答えを得ることができます:xcodeはiOSAppArchiveの代わりに一般的なxcodeアーカイブを作成しています
私の場合、FMDBとBlocksKitの両方を静的ライブラリに移動する必要がありました。以前は、サブプロジェクトとして構築されていました。リポを使用してユニバーサルライブラリを作成できることを忘れないでください。最終製品を作成するときに、シミュレーターコードは自動的に削除されます。
これのもう1つの考えられる理由は、「ターゲットの依存関係」に別のプラットフォームのプロジェクトへの参照があることです。私の特定のケースでは、OSXとiOSのコードを共有するプロジェクトに取り組んでいました。iOSターゲットの1つで、依存関係として誤ってOSXターゲットを追加しました。
徹底するために、私は自分の解決策を投稿しています。
Xcode 5.1.1(5B1008)でiOSプロジェクトのアーカイブをビルドしようとすると、まったく同じ問題が発生しました。上記の提案はいずれも問題を修正せず、それらのほとんどは無関係でした(フレームワークを追加しておらず、ビルドフェーズの[ヘッダーのコピー]セクションにパブリックエントリがありませんでした)。
私の場合、問題の修正は、プロジェクトを閉じ、以前に作成したアーカイブを削除し、[設定]> [アカウント]に移動し、開発者アカウントを削除し、Xcodeを終了し、再起動し、開発者アカウントを再追加し、アーカイブプロセスを開始するだけでした。また。これですぐに問題が解決しました。
上記のすべてが私にとってうまくいかなかったので、もう1つの解決策...
User Header Search Paths
(私はHeader Search Paths
同じようにエレガントに動作すると思います)をに変更しました"$(BUILT_PRODUCTS_DIR)/BlocksKit"
。
背景:
BlockKitでは、開発者はメインプロジェクトのヘッダーを展開時の構造とは異なる方法で構造化しました。したがって、プロジェクト内のヘッダーを参照することはできず、ビルドディレクトリにコピーされたヘッダーを参照する必要があります。
(Xcode 5)でこれが機能した方法2つのターゲットがあり、スキームを編集すると、スキームエディターの左側のペインに[BUILD、RUN、TEST、PROFILE XXX.APP、ANALYZE、ARCHIVE]が表示されます。 ] BUILDペインから、プロジェクトターゲットがリストに一覧表示されます。右端にARCHIVEの選択が表示されます。アーカイブするターゲットが、1つだけ選択されていることを確認してください。
プロジェクトで2つのターゲットを選択し、製品で必要なターゲットのみをチェックしましたが、機能しました。
XCodeでアプリプロジェクトのみを開くことで、このエラーを解決しました。アプリケーションと他のプロジェクト/ライブラリ/フレームワークで構成されるワークスペースを開かない。
2つの別々のプロジェクト、フレームワークまたは共有ライブラリ、およびiOSアプリケーションがあるため、それぞれを事前にビルドするために、共通の.xcworkspaceの代わりに.xcodeprojファイルを直接開くことによってそれぞれ2つの異なるXCodeウィンドウを開く必要がありました。
良い副作用として、クリーンを実行した後、XCodeはすべてのプロジェクトのすべてのターゲットを再構築しなくなり、ビルド時間が短縮されました。
背景:オープンソースSDKとデモiOSアプリケーションを作成しています。私は両方とも単一のワークスペースで開いていました。SDKターゲットでSkipinstallをYESに設定すると、アーカイブが空になるため、誰もアーカイブを作成できなくなります。そのため、これはオプションではありませんでした。パブリックヘッダーの代わりにプロジェクトを使用すると、アーカイブで配布する必要のあるヘッダーファイルが欠落するため、これもオプションではありませんでした。
それは私がワークスペースで働いていたからです。プロジェクトはアーカイブされましたが、オーガナイザーウィンドウに表示されませんでした。ワークスペースを閉じて、プロジェクトを単独で開きました。アーカイブはオーガナイザーで開かれました...お役に立てば幸いです。
私の場合、いくつかの一時ファイルを次の場所にコピーするカスタムスクリプトがありました。
${TARGET_BUILD_DIR}/myTempDir
つまり、アーカイブを調べてその内容を調べたところ、.appファイルのすぐ隣にmyTempDirフォルダーが見つかりました。スクリプトを変更して他の場所に保存すると、並べ替えられました。
Framework projetのパブリックヘッダーフォルダーパスに$(PROJECT_NAME)Headersを設定してみてください。ライブラリターゲットの設定を作成してから、パブリックヘッダーフォルダのパスを$(PROJECT_NAME)Headersとして編集する必要があります。
iOSアプリのプロジェクトにOSXコマンドラインツールを追加した後にこの問題が発生しました。コマンドラインツールのターゲットでは、デフォルトでSkipInstallがNOに設定されていました。明らかにOSXバイナリをiOSデバイスにインストールできないため、アーカイブはデフォルトで汎用Xcodeアーカイブになりました。このターゲットのSkipInstallをYESに設定すると、問題が修正されました。
私の場合、ターゲット名からアンダースコアを削除すると修正されました。
トリックを行ったのが実際のアンダースコアなのか、名前の変更自体なのかはわかりません。
同様の問題が発生しましたが、ポッドのないWatchKitアプリで発生しました。iOSアプリではSkipInstallが正しくNOに設定されていましたが、WatchKitアプリでは誤ってNOに設定されていました。
WatchKitアプリの[スキップインストール]を[はい]に変更すると(ただし、iOSアプリの場合は[いいえ]のまま)、問題が修正され、Xcodeは汎用XcodeアーカイブではなくiOSアプリアーカイブを正しく生成しました。
私の場合、他の30以上の回答はどれも機能していませんでした。アーカイブの場所([設定]-> [場所])を、サーバーを指すカスタムパスに設定しました(違いがある場合はWindows Server 2008)。
場所をローカルマシンのデフォルトの場所に戻すと、通常のiOSアプリアーカイブが作成されました。なぜこれが機能するのかはわかりませんが、他の人にも役立つことを願っています。
ここで、保存のために.xcarchiveファイルをサーバーに手動で移動する必要がありますが、少なくとも汎用アーカイブでは問題は発生しません。
私の場合、2つのターゲット(Target1とTarget2)があり、最初のターゲットは「iOSアプリ」にアーカイブできましたが、2番目のターゲットは「その他のアイテム」のみでした。したがって、私にとってこの問題を解決するためのより速い方法は、次の手順でTarget2をTarget1のコピーに置き換えることでした。1。Target2の
名前をTarget2_oldに
変更します。2。Target1のコピーを作成し、Target2に名前を変更します。
3.新しいTarget2の適切な.plistファイル(古いターゲットから)へのリンクを変更し、クラスの「ターゲットメンバーシップ」をチェックします。
4. [スキームの管理...]を開き、Target2_oldのスキームを削除してから、新しいTarget2の新しいスキームを追加し
ます。5
。この新しいスキームを選択し、[製品]->[アーカイブ]を選択します。
私の場合、コピーファイルにいくつかのファイルがありました。それらを削除したところ、すべてが正常に機能し、iOSアプリアーカイブを実現しました。[ビルドフェーズ]->[ファイルのコピー]に移動し、ファイルを削除します。これで問題が解決することを願っています。:)
バージョンが未定義の変数$(APP_PRODUCT_VERSION)で定義されているアプリで発生しました
バージョンを定義し、iOSアプリを生成できました。
これは、これらのソリューションのいずれも機能しなかった私のような貧しい人々のためのものであり、新しいシングルビューアプリケーションでさえ、エラーなしでビルドされますが、アーカイブに失敗します。
アーカイブロケーションパス(Xcode->設定->ロケーション->アーカイブパスで利用可能)に移動し、問題のある日のフォルダーを削除します!
アップルくそー!
これらの解決策はどれも私にはうまくいきませんでした。私の場合、Targets-> myApp-> Signing&Capabilities-> Signing Certificateは、iOSディストリビューションではなくAppleDevelopmentでした。
これは正しい解決策ではありませんが、アプリのアーカイブを生成することができました。私はプロジェクト全体を削除し、新しいチェックアウトを行いました(私は知っています、本当にばかげていますが、アプリアーカイブの生成を拒否したxcodeの数時間後、私は何でもしました)。正しいコード署名を設定すると、機能しました。したがって、おそらくxcodeの構成に不一致がありました。誰かが知っているなら、xcodeがアプリアーカイブを生成するのを実際に妨げる可能性のあるもの(可能な構成)は何ですか?それを聞いてうれしいです。とにかくみんなありがとう。
アーカイブを作成した後、Xcodeのオーガナイザーで、アーカイブされたプロジェクトファイルを選択し、を選択しますDistribute
。
これにより、別のウィンドウが表示されますSave for Enterprise or Ad-Hoc Deployment
。
これは必要なオプションです。[次へ]を選択すると、使用する配布プロファイルを選択し、次に.ipaを保存する場所を選択できます。
オプションではなく、Save for Enterprise or Ad-Hoc Deployment
オプションを選択してください。Export as Xcode Archive