アプリケーションからiOSアプリアーカイブを生成する際に問題があります。アプリケーションは問題なくコンパイルされ、シミュレーターでも動作します。今、私はSOMアドホックテストをしたかったので、iOS App Archiveを生成できません。製品->アーカイブをクリックすると、汎用のXcodeアーカイブが生成されます。誰も私を助けることができます。このアプリケーションのiOSアプリアーカイブを既に生成していることに言及する必要があります。何らかの理由でiOSアーカイブの生成が停止しました。どうもありがとう。
ビルド設定を確認します。
これは、フレームワーク/ライブラリを追加した場合に発生する可能性があります...そのライブラリのターゲット->ビルド設定を編集し、「スキップインストール」設定を「はい」に設定する必要があります。再アーカイブすると、XCodeは「汎用Xcodeアーカイブ」ではなく、「iOSアプリアーカイブ」の作成を再開します。
スキップインストールからはいに加えて、アプリプロジェクト内で別のlib/framworkプロジェクトを開いた場合、publicからヘッダー(ある場合)を移動する必要があります to project in the Build Phase/Copy Headers。
私はそれを私のために機能させるために次のことをしました:
Absolute path
から変更されていることを確認します。 products directory
に。注:検索を絞り込んでこのエラーの原因となっているライブラリを見つけるには、以下のヒントを参照してください。そしてそれはそれでした!
hint: ipaではなく、アーカイブがアーカイブファイルを作成する原因となっている問題のあるファイルを把握するには、次のようにします。
usr/local/include
は、パブリックからプロジェクトに移動する必要がある犯人ヘッダーファイル、または絶対パスから製品ディレクトリに変更する必要があるファイル(またはスキップインストールをyesに設定するのを忘れたファイルも識別します)国旗)。ただし、そのディレクトリ(つまりusr/local/include)は、サブライブラリのディレクトリ構造によって異なります。多くの場合、.all上記の手順3のCopy Filesの下にリストされているファイルが表示されます。ここでそれらを見つけた場合、問題の原因に対する明確な答えがあります。ヒントへの更新:生活をさらにシンプルにします。上記のhintの手順4で表示されるファイルはすべて、単にグローバル検索で検索します。 xcode ..そして、あなたは欲しいものに対して即座に結果を得るはずです..例えば、これは私のフォルダの内容でした(上のヒントの手順に従って):
だから、cryptoおよびsslライブラリと何か関係があると言えます。
スキップインストールを[はい]に設定するのを忘れたことに気付きました。
アーカイブをエクスポートする場合は、アーカイブを開いて、Productsで/urs/local/include
を参照してください この提案 :
各ポッドの
Packaging
の下で、Private Headers Folder Path
およびPublic Headers Folder Path
が/usr/local/include
に設定されています。それらをクリアすると、有効なアーカイブが取得されます。
React Nativeアプリを0.11.0
、Xcode 7
、およびCocoaPods 0.39.0.beta.4
にアップグレードした後、私のために働きました。
WatchKitまたはToday拡張機能と同様にCocoaPodsを使用している場合、CocoaPodsリポジトリには、問題が何であるかを説明する issue があります。
私にとってのsolutionは、Copy Pod Resources
の下のWatchKit ExtensionおよびToday ExtensionターゲットからBuild Phases
フェーズを削除することでした。これを実行すると、プロジェクトは予想どおりにコンパイルおよびアーカイブされました。
これが誰かを助けることを願っています、これは私が丸一日困惑していました!
上記の回答のいずれかが機能しない場合、問題はおそらくcocoaPods
にあります。最新の更新0.38.1
は私のために物事を台無しにしましたが、その後0.37.1
にダウングレードし、物事は正常に戻りました。 Xcode 6.3.1
を使用
後の編集:0.38.2
への更新もこれを修正します。この問題の原因についての詳細はこちら: Cocoapods 0.38.1は有効なアーカイブの作成に失敗しました
私はXcode5を使用しており、それをソートしたのはビルドスキームの編集でしたが、適用可能な上記の提案をすべて試してもうまくいきませんでした。
「App」と「App FREE」という2つのターゲットがありました。汎用アーカイブに関する問題は、無料版をアーカイブしようとしたときに発生しました。これは、アプリの「通常」バージョンの後に追加しました。私の場合、ツールバーでそのスキームを選択し、[スキームの編集]を選択すると、ビルドセクションに2つのターゲット、つまりAppとApp FREEがあることがわかりました。
Appのすべての列のチェックを外し、App FREEの列のみをチェックしたままにして、[OK]をクリックしました。次に[製品]> [アーカイブ]を選択したとき、汎用アーカイブの代わりにアプリが無料になりました。 :)
プロジェクトが1つしかない場合は、このソリューションが役立つかもしれません。この問題は、ターゲットを複製したときに発生していました。その結果、2つのターゲットが並行してビルドされました。これが問題の原因でした。汎用IOSアーカイブが作成されました。
構築された並列をオフにするには
ワークスペースに複数のプロジェクト(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デプロイメントターゲットをチェックして、それらがすべて同じであることを確認します。
IOS 9とXcode 7にアップデートした後、この問題が発生しました。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
を実行するだけです
この問題がありました。私の場合、MacアプリのターゲットをiOSアプリの依存関係として保持することが原因でした。
このようにセットアップされた理由は、MacアプリがiOSアプリ用のデータを生成するために使用されるツールであり、それがバンドルに含まれていたためです。
IOSアプリ自体のビルドを行う前に、その依存関係を削除し、ツールを個別にビルドする必要がありました。
私のシナリオでは、主にObjective-CプロジェクトにSwiftコードを含め始めた後にのみ、誤った「Generic Archive」を取得していました。 Xcodeが吐き出したアーカイブファイルの多くのトラブルシューティングと調査の後、SwiftSupport
フォルダー(Swiftランタイムに必要なdylibを含む)がアーカイブ内の別の場所にあることに気付きました。 Vanillaの新しいSwiftプロジェクトアプリアーカイブからのものです。
Installation Directory
ビルド設定を見つけましたが、プロジェクトのカスタムパスに設定されていることに気付きました。単に削除して(/Applications
の一般的な値に設定)、次のビルド->アーカイブを期待どおりに動作させ、適切なiOSアプリアーカイブを提供しました。
TL; DR:アプリにSwiftコードを含める場合、特に[次の場合] Installation Directory
ビルド設定が/Applications
のデフォルト値に設定されていることを確認してくださいいくつかの予期しないレガシービルド設定がある古いプロジェクトファイルから開始しています。
これをここに残して、他の人を同じ旅から救います。
ワークスペース内の静的ライブラリターゲットからも同じCopy Pod Resourcesビルドフェーズを削除する必要があることがわかりました。
Alex Lの回答に追加。
ポイント3. [ビルド設定]-> [パブリックヘッダーフォルダーパス]を[include/xxx]に変更しても機能します。
上記のどれもあなたを助けなかった場合...多くの時間の後.......
バンドルバージョンのInfo.plistの値を削除しましたバンドルバージョンショート1.0だけで十分だったので。 悪い。これをしないでください。
*注意:実際には、右側のUIで編集して、Info.plistファイルに空のキーが配置されることを認識していません。私はそれが無効になると思います。私のバンドルはアーカイブ中に他のアイテムとして表示され、アイコンがなく、どこにもアップロードできませんでした。
これは、Info.plistの無効な値に要約されます。有効なアーカイブでない場合は、古いアーカイブを解凍し、現在のアーカイブをドロップ/上書きして、アーカイブの再構築時に修正されるかどうかを確認してください。
ビルド設定に移動して追加します
yourAppName/Resources/dist.plist to Code Signing Entitlements
cmd + B with iOS DeviceまたはReal Deviceをビルドターゲットとして選択します
完了したら、「Products」フォルダーまでスクロールして、yourAppName.appを右クリックします。
「Finderに表示」を選択します
名前でフォルダーを作成しますペイロード(capital "P")
コピー yourAppNameをペイロードフォルダーに
Zipの作成ペイロードフォルダーから
名前変更 ZipをyourAppName.ipaに
完了
すべてについて試した後:
それから、ブートパーティションが「空きディスク領域が少ない」ことに気付きました。約1GBほどです。再起動すると、約18GBが無料になりました。
その後、Xcodeとプロジェクトを開き、アーカイブを実行しました...そして驚くべきことに(アーカイブを構築しようとして1時間後)、ついに非汎用アーカイブを得ました。
それを修正した空きディスクの問題か、それを修正したmacOSの再起動かどうかはわかりませんが、私にとってはうまくいきました。
[プロジェクト]> [ターゲット]> [ビルドフェーズ]> [ターゲットの依存関係]に.xcodeprojファイルがある場合は、そこから削除してからipaをビルドします。わたしにはできる。乾杯
あなたはここで答えを得ることができます: xcodeはiOS App Archiveの代わりに汎用xcodeアーカイブを作成しています
私の場合、一時ファイルを次の場所にコピーするカスタムスクリプトがありました。
${TARGET_BUILD_DIR}/myTempDir
つまり、アーカイブを調べてその内容を検査した後、.appファイルのすぐ隣にmyTempDirフォルダーが見つかりました。他の場所に保存するためにスクリプトを変更したら、物事はソートされました。
私の場合、他の30以上の回答はどれも機能していませんでした。アーカイブの場所([設定]-> [場所])を、サーバーを指すカスタムパスに設定しました(違いがある場合はWindows Server 2008)。
場所をローカルマシンのデフォルトの場所に戻すと、通常のiOSアプリアーカイブが作成されました。これがなぜ機能するのかはわかりませんが、他の人にも役立つことを願っています。
ここで、保存のために.xcarchiveファイルをサーバーに手動で移動する必要がありますが、少なくとも一般的なアーカイブで問題は発生しません。
このエラーは、XCodeでアプリプロジェクトのみを開くで解決しました。 ワークスペースを開かないアプリケーションと他のプロジェクト/ライブラリ/フレームワークを含む。
2つの独立したプロジェクト、フレームワークまたは共有ライブラリ、iOSアプリケーションがあるため、それぞれ。xcodeprojファイルを直接開くことにより、2つの異なるXCodeウィンドウを開く必要がありました共通の。xcworkspaceの代わりに、それぞれを適切にビルドします。
ナイスな副作用として、XCodeはCleanを実行した後、すべてのプロジェクトのすべてのターゲットを再構築しなくなり、ビルド時間が短縮されます。
背景:私は、オープンソースSDKとデモiOSアプリケーションを作成しています。両方を単一のワークスペースで開きました。 SDKターゲットでSkip installをYESに設定すると、だれでも防ぐことができます空になるため、アーカイブの作成から、これはオプションではありませんでした。 Projectの代わりにPublicヘッダーを使用すると、アーカイブでヘッダーが失われます配布する必要があるファイルなので、これもオプションではありませんでした。
私の場合、ファイルのコピーにいくつかのファイルがありました。それらを削除しただけで、すべてが正常に機能し、iOSアプリアーカイブを達成しました。 Build Phases-> Copy Filesに移動して、ファイルを削除します。これで問題が解決することを願っています。 :)
これは、これらのソリューションのいずれも機能しなかった私のような貧しい人々のためのものです。新しいシングルビューアプリケーションでさえ、エラーなしでビルドしてもアーカイブに失敗します。
アーカイブの場所のパス(Xcode->設定->場所->アーカイブのパスで利用可能)に移動し、問題のある日のフォルダーを削除してください!
くそーりんご!
なぜなら、私はワークスペースで働いていたからです。プロジェクトはアーカイブされましたが、オーガナイザーウィンドウに表示されます。ワークスペースを閉じて、プロジェクトを単独で開きました。アーカイブはオーガナイザーで開かれています...助けになることを願っています。
これの別の考えられる理由は、「ターゲットの依存関係」に異なるプラットフォームのプロジェクトへの参照があることです。私の特定のケースでは、OSXとiOSのコードを共有するプロジェクトに取り組んでいました。 iOSターゲットの1つで、依存関係として誤ってOSXターゲットを追加していました。
上記のすべてが私にとってうまくいかなかったので、もう1つの解決策...
User Header Search Paths
(Header Search Paths
は同じようにエレガントに動作すると思います)を"$(BUILT_PRODUCTS_DIR)/BlocksKit"
に変更しました。
背景:
BlockKitでは、開発者は展開時の構造とは異なる方法でメインプロジェクトのヘッダーを構造化しました。そのため、プロジェクト内のヘッダーを参照することはできず、ビルドディレクトリにコピーされたヘッダーを参照する必要があります。
これが私のために働いた方法(Xcode 5)には2つのターゲットがあり、スキームを編集すると、スキームエディターの左ペインに[ビルド、実行、テスト、プロファイルXXX.APP、分析、アーカイブが表示されます] [ビルド]ペインから、プロジェクトターゲットがリストに表示されます。右端には、アーカイブの選択が表示されます。アーカイブするターゲットが1つだけ選択されていることを確認してください。
プロジェクトで2つのターゲットを選択し、製品で必要なターゲットのみをチェックしましたが、うまくいきました!
私の場合、2つのターゲット(Target1とTarget2)があり、そのうちの1つは「iOSアプリ」に、もう1つは「その他のアイテム」にのみアーカイブできました。したがって、この問題を解決するためのより速い方法は、次の手順でTarget2をTarget1のコピーに置き換えることでした。
1。 Target2の名前をTarget2_oldに変更します
2。 Target1のコピーを作成し、Target2に名前を変更します。
3。新しいTarget2の適切な.plistファイル(古いターゲットから)へのリンクを変更し、クラスの「Target Membership」をチェックします。
4。 「スキームの管理...」を開き、Target2_oldのスキームを削除してから、新しいTarget2の新しいスキームを追加します
5。この新しいスキームを選択し、製品->アーカイブを選択します
私の場合、FMDBとBlocksKitの両方を静的ライブラリに移動する必要がありました。以前は、サブプロジェクトとして構築されていました。リポを使用してユニバーサルライブラリを作成できることを忘れないでください。最終製品を構築するとき、シミュレータコードは自動的に削除されます。
未定義の変数$(APP_PRODUCT_VERSION)でバージョンが定義されているアプリで私に起こりました
バージョンを定義し、iOSアプリを生成できました。
Framework projetのPublic Headers Folder Pathに$(PROJECT_NAME)Headersを設定してみてください。ライブラリターゲットの設定を作成し、パブリックヘッダーフォルダーのパスを$(PROJECT_NAME)Headersとして編集する必要があります。
IOSアプリのプロジェクトにOS Xコマンドラインツールを追加した後にこの問題が発生しました。コマンドラインツールのターゲットでは、インストールのスキップがデフォルトでNOに設定されていました。 OS XバイナリをiOSデバイスにインストールすることは明らかにできないため、アーカイブはデフォルトで汎用Xcodeアーカイブになりました。このターゲットで「インストールをスキップ」を「はい」に設定すると、問題が修正されました。
同様の問題に遭遇しましたが、ポッドのないWatchKitアプリでした。 iOSアプリでは[スキップインストール]は正しく[いいえ]に設定されていましたが、WatchKitアプリでは[いいえ]に誤って設定されていました。
WatchKitアプリのスキップインストールをYESに変更(ただしiOSアプリではNOのまま)することで問題が修正され、Xcodeは汎用XcodeアーカイブではなくiOSアプリアーカイブを正しく生成しました。
徹底するために、解決策を投稿しています。
Xcode 5.1.1(5B1008)でiOSプロジェクトのアーカイブを構築しようとすると、まったく同じ問題が発生しました。上記の提案はいずれも問題を解決せず、それらのほとんどは無関係でした(フレームワークを追加したことはなく、ビルドフェーズの[ヘッダーをコピー]セクションにパブリックエントリがありませんでした)。
私の場合、問題を解決するには、単にプロジェクトを閉じる、以前に作成したアーカイブを削除する、環境設定>アカウントに移動する、開発者アカウントを削除する、Xcodeを終了する、再起動する、開発者アカウントを再度追加する、アーカイブプロセスを開始するだけでした再び。これですぐに問題が解決しました。
私の場合、ターゲット名からアンダースコアを削除すると修正されました。
それが実際のアンダースコアなのか、名前の変更そのものなのかは定かではありません。