ios - 設定 - symbolicatecrash xcode9




デバイスでフレームワークがクラ ッシュしたiOSアプリケーション、dyld:ライブラリがロードされていない、Xcode 6 Beta (14)

このクラッシュはブロック問題でしたが、基本的に次の手順を使用して問題を再現しました。

  • Cocoa Touch Frameworkプロジェクトを作成する
  • 迅速なファイルとクラスを追加するDog
  • デバイスのフレームワークを構築する
  • Swiftで単一のビューアプリケーションを作成する
  • フレームワークをアプリプロジェクトにインポートする
  • ViewControllerのフレームワークからswiftクラスをインスタンス化する
  • 端末にアプリを構築して実行する

起動時にアプリが即座にクラッシュしました。ここにコンソールログがあります:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

私はiOS 7.1と8.0のデバイスを構築しようとしましたが、どちらも同じクラッシュがあります。 しかし、私はアプリを構築し、シミュレータ上で正常に実行することができます。 また、フレームワークをライブラリからリンクバイナリ必須からオプションに変更することはできますが、問題を完全には解決していないことがわかりました.AppleはDogのインスタンスを作成するとクラッシュしました。 動作はデバイスとシミュレータによって異なりますが、Xcodeのベータ版を使用してデバイス用のフレームワークを配布することはできません。 誰もこれに光を当てることができますか?


iOSが8以上の場合

ターゲットの[全般]タブの[埋め込みバイナリ]セクションで、フレームワークを追加します。 これは、実行時にリンクできるように、フレームワークをコンパイル済みにコピーします。

なんでこんなことが起こっているの? あなたがリンクしているフレームワークは動的にリンクされたフレームワークとしてコンパイルされているため、実行時にリンクされているからです。

注:カスタムフレームワークの組み込みはiOS> 8でのみサポートされているため、古いバージョンのiOSで動作する代替ソリューションがこれに続きます。

iOSが8未満の場合

このフレームワーク(ソースコード/ビルドプロセスへのアクセス権)に影響を与える場合、このフレームワークを動的にリンクするのではなく静的にリンクするように変更することができます。 これにより、実行時にリンクされるのではなく、コンパイルされたアプリケーションにコードが組み込まれ、フレームワークを埋め込む必要がなくなります。

方法:フレームワークのBuild SettingタブのLinkingセクションで、 Mach-O TypeをStatic Libraryに変更します。 今では、組み込みバイナリの下にフレームワークを含める必要はありません。

アセットを含めるイメージ、オーディオ、またはxib / nibファイルなどを含めるには、バンドル(基本的にディレクトリ、詳細はbit.ly/ios_bundle)を作成し、NSBundleを使用してバンドルからアセットをロードすることをお勧めします。


  1. xcodeのファイルに移動 - >ワークスペースの設定
  2. 次の矢印をクリックします。/ Users / apple / Library / Developer / Xcode / DerivedData
  3. 派生データを選択し、それをゴミ箱に移動します。
  4. かなりxcodeして、再び開きます。
  5. プロジェクトをクリーンアップし、再度実行してください。

上記の手順は私のissusesを解決しました。


iOS 9.xバージョンでも同じ問題が発生する

ISSUE IS: App crashes as soon as I open the app with below error.

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/######/TestApp.app/TestApp Reason: image not found

私はこの問題を解決するために、 UserNotifications.frameworkフレームワークのLinked Frameworks and Libraries Required to Optionalを変更しUserNotifications.framework


まず、Command + Option + Shift + Kの後にビルドしてみてください。まだ失敗したら、以下の手順を実行してください。

Xcode 8で誰かがこのエラーに直面している場合は、ターゲットの[一般]タブでフレームワークステータスを[必須]ではなく[ オプション]に変更します。


サードパーティのフレームワークを使用していて、依存マネージャとしてCocoapodsを使用している場合は、 pod installしてポッドを更新してみてください。

このクラッシュは、私が使用していたサードパーティ製のライブラリで発生していたので、上記の解決策がうまくいきました。


ターゲットの[ 全般 ]タブには、[ 埋め込みバイナリ]フィールドがあります。 フレームワークを追加すると、クラッシュが解決されます。

参考になるのは、Apple Developer Forumsです。


埋め込みバイナリにフレームワークを追加する

その後、クリーンでビルドします。


実行時にフレームワークがアプリケーションバンドルに確実にコピーされるように、新しいCopy Filesビルドフェーズにフレームワークを追加する必要があります。

詳細については、ターゲット「ファイルコピービルドフェーズ」を追加する方法を参照してください。

公式のApple Docs: https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html : https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html


私の場合、解決策は、ワークスペース内のスタンドアロンプ​​ロジェクトである組み込みバイナリからコンパイルされたフレームワークを削除し、クリーンで再構築し、最後にEmbedded Binariesに再追加することでした。


私の環境:Cocos2d 2.0、Box2d、Objective C

上記の他の回答に加えて、私は最終的にGeneralタブに行き、WatchKitをオプションにしました。


私は(ここで述べたものの上に) Runpath Search PathsBuild Settingsタブの次の行を追加しなければなりませんでした:
@executable_path/Frameworks


私も同じ問題がありました。 私は前に使ったことのないiPhoneでプロジェクトを構築しようとしましたが、新しいフレームワークを追加しませんでした。 私にとっては、クリーンアップはうまくいきました( Shift + Command + K )。 Xcode 7のベータ5とiOS 9 Betaを搭載したiPhone 6を使用していたのかもしれませんが、うまくいきました。


開発ポッドを持っている場合ポッドからのインストールをシミュレータから削除 - >クリーン - >再度実行...


驚いたことに、少なくともXcode 8では、必要な部分がすべてここに記録されているわけではありません。

私のケースは、同じワークスペースの一部としてカスタムビルドされたフレームワークでした。 それは間違って作られていたことが分かります。 このスレッドへのjeremyhuの最後の回答に基づいて:

https://forums.developer.apple.com/thread/4687

フレームワークの Build SettingsDynamic Library Install Name BaseDYLIB_INSTALL_NAME_BASE )をBuild Settingsしてから再構築しなければなりDYLIB_INSTALL_NAME_BASEた。 それは$(LOCAL_LIBRARY_DIR)に間違って設定されていて、それを@rpathに変更しなければなり@rpath

リンク処理段階では、ホストアプリケーションに、アプリケーションからパス /Frameworks/fw.Framework/fw アプリケーション /Frameworks/fw.Framework/fw アプリケーションへのパスではなく、実行時に/Library/Frameworks/fw.Framework/fw (ファイルシステムのルートのように)を動的にロードするように指示していました。 /Frameworks/fw.Framework/fw

他のすべての設定については、 Build Phases 3か所にある必要がありますが、ホスティングアプリの[ General ]タブの[ Embedded Binaries ]設定に追加すると、これらはすべて一度に設定されます。

とにかく埋め込み段階に関して直観的に余計なように見える、追加のCopy Files段階を設定する必要はありませんでした。 ビルドのトランスクリプトの末尾をチェックすることで、それは必要ではないことが保証されます。

PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework

[多くの冗長な行が削除されましたが、Xcode UIの簡略化されたトランスクリプトからは明らかです。]

私はまだXcodeがDYLIB_INSTALL_NAME_BASE値を私に間違って設定したのかどうかDYLIB_INSTALL_NAME_BASEません。







xcode6