web-dev-qa-db-ja.com

Xcode 7で予期しないMach-Oヘッダーコード0x72613c21が見つかりました

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

プロジェクトの埋め込みフレームワークセクションからダイナミックフレームワークを削除すると、検証に合格できますが、ダイナミックフレームワークのイメージが見つからないため、デバイスで実行するとクラッシュします。ところで、動的フレームワークではビットコードが無効になっているため、私のプロジェクトでもビットコードが無効になっており、コード署名されていません。

44
pzs7602

フレームワークごとに2つのことを確認します。

  1. フレームワークのMach-Oタイプ(フレームワークターゲットのビルド設定)

Mach-O

  1. Build Phases-> Embed Frameworksに配置してフレームワークをコピーするか(またはa。brooks hollarが述べたようにバンドルリソースをコピーするか)

Embed frameworks

フレームワークのMach-Oタイプが「静的ライブラリ」である場合、埋め込みフレームワークにnotを配置する必要があります。 Mach-Oタイプが「動的ライブラリ」の場合、shouldを埋め込みフレームワークに入れる必要があります。

私の場合、同じフレームワーク名の静的ライブラリターゲットと動的ライブラリターゲットの両方を持つ手動で追加したSocketRocketでした。静的ライブラリターゲットを削除し、動的ライブラリフレームワークのみを埋め込むと、問題はなくなります。


ソースプロジェクトにアクセスできない場合は、次のアプローチを使用して、動的なフレームワークか静的なフレームワークかを手動で確認できます。 https://stackoverflow.com/a/32591983/308315

41
Cosyn

ビルドフェーズ->バンドルリソースをコピーして、存在しないフレームワークまたはその他のバイナリを確認します。

私の場合、追加したのはサードパーティのライブラリ(Parse)でした。

18

私の場合、フレームワークをプロジェクトに手動でドラッグすると、General-> Embedded Binariesにリストされ、エラーFound an unexpected Mach-O header code: 0x72613c21が発生します。 Embedded BinariesからLinked Frameworks and Librariesに移動した後、問題は解決しました。

15
Ke Yang

同じ問題がありました。私はいくつかのことをしましたが、私の問題はなくなりました。私の問題は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」を削除できました。

8
CodeOverRide

私にとっては、Carthage _/usr/local/bin/carthage copy-frameworks_実行スクリプトにFabricバイナリがありました。

それらを削除した後、問題を修正しました。

Xcode Version 9.4.1 (9F2000)を使用しています

7
Kubee

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による このコメント に送られます。

6

こちらをご覧くださいAppleドキュメント アプリへのフレームワークの埋め込み セクションに移動組み込み静的ライブラリは、このエラーを次のように説明します。

これは、フレームワークのように見えるバンドル構造に静的ライブラリを配置することにより発生します。このパッケージは、サードパーティのフレームワーク開発者から静的フレームワークと呼ばれることがあります。これらの状況でのバイナリは静的ライブラリであるため、アプリはアプリバンドルに埋め込むことができません。

また、修正する方法も提供します。

このエラーを解決するには、静的フレームワークを特定し、[埋め込みバイナリ]セクションから削除します。

Inbining A Binary's Linkage の指示に従うことでこれを達成します。

4
andreskwan

それらをEmbedded Binariesから削除してLinked Frameworks and Libariesに追加し、再度アーカイブしてストアにアップロードします。

4

なぜかはわかりませんが、ポッドが何らかの形で埋め込みバイナリになったようです。だから私はそれを削除し、ポッドをもう一度インストールする必要があり、問題は消えた。

enter image description here

3
Jorge Casariego

FacebookSDKフレームワークでこのエラーに遭遇しました。 Build PhasesのEmbed frameworksリストから削除し、問題を解決しました。ログを調べて、他の人が述べたエラーの原因となっているフレームワークを見つけます。

1
Adam Mendoza

私の場合、開発者証明書/チームの変更が原因でした。

私は個人的なDev Apple IDでプロジェクトを開始し、それを作業IDに変更するまでに。または他のサイトでは何も変更しません。

チームを個人IDに戻すと、エラーログに、現在(ごく最近追加された)いくつかのフレームワークの.xcentファイルが見つからないことが示されます。そこで、まったく新しいプロジェクトを開始し、すべてのソースとファイルを貼り付けてから、cocoapodを実行すると、すべてが期待どおりに機能します。

1
Ondřej H

これを修正する私の方法は、Fabric/Crashlytics派手なCarthageセットアップ(バグのあるように見えた)の代わりにCocoapods経由でインストール。

1
SoftDesigner

Swift 2.3非CocoaPodsプロジェクトに手動で追加されたPFFacebookUtilsフレームワークでこの問題が発生しました。ビルドの[全般]ページの組み込みフレームワークセクションからフレームワークを削除することで修正しました。ビルドフェーズでターゲットを設定してリンク->バイナリをライブラリとリンク

0
johncederholm

こちらのファブリックのマイク。

これはXcode Beta 2および3のバグでしたが、Beta 4で修正されており、最新に更新すると解決します。

0
Mike Bonnell

この問題は、非常に単純なフレームワークプロジェクトで発生しました。私のフレームワークのプロジェクトにはターゲットが1つしかなく、うまく構築されていました。いくつかの単体テストを追加したかったので、2つの新しいターゲットを追加しました。iOS単体テストバンドルターゲットと、シングルビューアプリケーションターゲット(テストのホストアプリとして機能するため)です。ただし、両方の新しいターゲットがこのエラーをスローしていました。

この問題は、静的ライブラリに設定されている新しいターゲットのMach-Oタイプビルド設定が原因であることがわかりました。どうやら新しいターゲットは親プロジェクトからMach-Oタイプを継承していたようです。 Mach-Oタイプを正しい設定(単体テストの場合は「バンドル」、ホストアプリの場合は「実行可能」)に設定すると、すべて正常に機能しました。また、ビルドをクリーンにし、派生データを削除し、シミュレーターをリセットして、新しい設定を取得する必要がありました。

0
shocking