ObjC動的フレームワークを使用するSwiftプロジェクトがあります。フレームワークをプロジェクトにリンクして組み込む必要がありました。プロジェクトはデバイスで正常に実行され、App Storeに送信されるとエラーが発生しました検証中:Found an unexpected Mach-O header code: 0x72613c21
検証ログは次のとおりです。
2015-10-12 02:32:33 +0000 [MT] Beginning distribution assistant for archive: MusicFans, task: Validate
2015-10-12 02:32:33 +0000 [MT] Automatically selecting the only availaable distribution method <IDEDistributionMethodiOSAppStoreValidation: 0x7f851c1d96c0>
2015-10-12 02:32:34 +0000 [MT] [OPTIONAL] Didn't find archived user entitlements for <DVTFilePath:0x7f851b42db10:'/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/Frameworks/libswiftDispatch.dylib'>: Error Domain=NSCocoaErrorDomain Code=4 "Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/Frameworks/libswiftDispatch.dylib" did not contain a "archived-expanded-entitlements.xcent" resource." UserInfo={NSLocalizedDescription=Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/Frameworks/libswiftDispatch.dylib" did not contain a "archived-expanded-entitlements.xcent" resource.}
2015-10-12 02:32:34 +0000 [MT] [OPTIONAL] Didn't find archived user entitlements for <DVTFilePath:0x7f8529a08050:'/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/wavpack.framework'>: Error Domain=NSCocoaErrorDomain Code=4 "Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/wavpack.framework" did not contain a "archived-expanded-entitlements.xcent" resource." UserInfo={NSLocalizedDescription=Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/wavpack.framework" did not contain a "archived-expanded-entitlements.xcent" resource.}
2015-10-12 02:32:34 +0000 [MT] [OPTIONAL] Didn't find archived user entitlements for <DVTFilePath:0x7f850da13de0:'/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/FLAC.framework'>: Error Domain=NSCocoaErrorDomain Code=4 "Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/FLAC.framework" did not contain a "archived-expanded-entitlements.xcent" resource." UserInfo={NSLocalizedDescription=Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/FLAC.framework" did not contain a "archived-expanded-entitlements.xcent" resource.}
2015-10-12 02:33:07 +0000 [MT] Canceled distribution assistant
プロジェクトの埋め込みフレームワークセクションからダイナミックフレームワークを削除すると、検証に合格できますが、ダイナミックフレームワークのイメージが見つからないため、デバイスで実行するとクラッシュします。ところで、動的フレームワークではビットコードが無効になっているため、私のプロジェクトでもビットコードが無効になっており、コード署名されていません。
フレームワークごとに2つのことを確認します。
フレームワークのMach-Oタイプが「静的ライブラリ」である場合、埋め込みフレームワークにnotを配置する必要があります。 Mach-Oタイプが「動的ライブラリ」の場合、shouldを埋め込みフレームワークに入れる必要があります。
私の場合、同じフレームワーク名の静的ライブラリターゲットと動的ライブラリターゲットの両方を持つ手動で追加したSocketRocketでした。静的ライブラリターゲットを削除し、動的ライブラリフレームワークのみを埋め込むと、問題はなくなります。
注:
ソースプロジェクトにアクセスできない場合は、次のアプローチを使用して、動的なフレームワークか静的なフレームワークかを手動で確認できます。 https://stackoverflow.com/a/32591983/308315
ビルドフェーズ->バンドルリソースをコピーして、存在しないフレームワークまたはその他のバイナリを確認します。
私の場合、追加したのはサードパーティのライブラリ(Parse)でした。
私の場合、フレームワークをプロジェクトに手動でドラッグすると、General
-> Embedded Binaries
にリストされ、エラーFound an unexpected Mach-O header code: 0x72613c21
が発生します。 Embedded Binaries
からLinked Frameworks and Libraries
に移動した後、問題は解決しました。
同じ問題がありました。私はいくつかのことをしましたが、私の問題はなくなりました。私の問題はCocoapodsバージョンに関連していたと思いますが、ここでいくつかのことを試すことができます。
最初のDerivedDataのクリーンアップ:
1.Xcodeをオフにする
2. ./Users/YourFile/Library/Developer/Xcode/DerivedDataに移動します
3.このフォルダーからすべてを削除する
4.Xcodeを実行する
5.Build&Clean
何らかの理由で、最新のココアポッドバージョン0.39では、pod install
を実行したときに次の警告が表示されていました。
[!]
MY_TARTGET
ターゲットは、 `Pods/Target Support Files/Pods/Pods.release.xcconfig 'で定義されたEMBEDDED_CONTENT_CONTAINS_Swift
ビルド設定をオーバーライドします。これにより、CocoaPodsのインストールで問題が発生する可能性があります
インストールされているすべてのココアポッドを削除して、ココアポッドをダウングレードしました。
Sudo gemアンインストールココアポッド
次に、古いバージョンをインストールします。
Sudo gem install cocoapods -v 0.38.1
これにより警告が削除され、エラー「予期しないMach-Oヘッダーコード:0x72613c21」を削除できました。
私にとっては、Carthage _/usr/local/bin/carthage copy-frameworks
_実行スクリプトにFabricバイナリがありました。
それらを削除した後、問題を修正しました。
Xcode Version 9.4.1 (9F2000)
を使用しています
Edit:これはXcode 8 Beta 3で修正されるようです。
私は現在、Xcode 8 Beta 2およびSwift 3で純粋なSwift Podでこの問題が発生しています(問題の原因と思われます)。
Podfileに以下を追加すると、問題が修正されました。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ALWAYS_EMBED_Swift_STANDARD_LIBRARIES'] = 'NO'
end
end
end
クレジットは、GitHubのYuAoによる このコメント に送られます。
こちらをご覧くださいAppleドキュメント アプリへのフレームワークの埋め込み セクションに移動組み込み静的ライブラリは、このエラーを次のように説明します。
これは、フレームワークのように見えるバンドル構造に静的ライブラリを配置することにより発生します。このパッケージは、サードパーティのフレームワーク開発者から静的フレームワークと呼ばれることがあります。これらの状況でのバイナリは静的ライブラリであるため、アプリはアプリバンドルに埋め込むことができません。
また、修正する方法も提供します。
このエラーを解決するには、静的フレームワークを特定し、[埋め込みバイナリ]セクションから削除します。
Inbining A Binary's Linkage の指示に従うことでこれを達成します。
それらをEmbedded Binaries
から削除してLinked Frameworks and Libaries
に追加し、再度アーカイブしてストアにアップロードします。
FacebookSDKフレームワークでこのエラーに遭遇しました。 Build PhasesのEmbed frameworksリストから削除し、問題を解決しました。ログを調べて、他の人が述べたエラーの原因となっているフレームワークを見つけます。
私の場合、開発者証明書/チームの変更が原因でした。
私は個人的なDev Apple IDでプロジェクトを開始し、それを作業IDに変更するまでに。または他のサイトでは何も変更しません。
チームを個人IDに戻すと、エラーログに、現在(ごく最近追加された)いくつかのフレームワークの.xcentファイルが見つからないことが示されます。そこで、まったく新しいプロジェクトを開始し、すべてのソースとファイルを貼り付けてから、cocoapodを実行すると、すべてが期待どおりに機能します。
これを修正する私の方法は、Fabric/Crashlytics
派手なCarthageセットアップ(バグのあるように見えた)の代わりにCocoapods経由でインストール。
Swift 2.3非CocoaPodsプロジェクトに手動で追加されたPFFacebookUtilsフレームワークでこの問題が発生しました。ビルドの[全般]ページの組み込みフレームワークセクションからフレームワークを削除することで修正しました。ビルドフェーズでターゲットを設定してリンク->バイナリをライブラリとリンク
こちらのファブリックのマイク。
これはXcode Beta 2および3のバグでしたが、Beta 4で修正されており、最新に更新すると解決します。
この問題は、非常に単純なフレームワークプロジェクトで発生しました。私のフレームワークのプロジェクトにはターゲットが1つしかなく、うまく構築されていました。いくつかの単体テストを追加したかったので、2つの新しいターゲットを追加しました。iOS単体テストバンドルターゲットと、シングルビューアプリケーションターゲット(テストのホストアプリとして機能するため)です。ただし、両方の新しいターゲットがこのエラーをスローしていました。
この問題は、静的ライブラリに設定されている新しいターゲットのMach-Oタイプビルド設定が原因であることがわかりました。どうやら新しいターゲットは親プロジェクトからMach-Oタイプを継承していたようです。 Mach-Oタイプを正しい設定(単体テストの場合は「バンドル」、ホストアプリの場合は「実行可能」)に設定すると、すべて正常に機能しました。また、ビルドをクリーンにし、派生データを削除し、シミュレーターをリセットして、新しい設定を取得する必要がありました。