Library not loadedでCrashした時に行なった対処
Library not loadedでクラッシュとの遭遇
アプリを作っている時は、問題なく実機で実行できていたが、 iTunes ConnectにバイナリのUploadが終わって、メタデータ用のスクリーンショットを撮ろうとシミュレータで実行した際に下記内容のクラッシュに初遭遇した。
dyld: Library not loaded: @rpath/Realm.framework/Realm Referenced from: /var/containers/Bundle/Application/... Reason: image not found
1. Embedded Binariesに追加とその結果
- Embedded BinariesにDynamic Libraryを入れる
→ 確かにクラッシュはしなくなる。動作も問題ない。 しかし、ArchiveしてiTunes ConnectにUploadする時、ValidateでErrorが発生する 内容は、Realm.frameworkにx86_64, i386のarchitectureは含まれていない。と。 ただ実行したいだけであればいいが、今回はStore申請も絡んでいるので却下。
2. 重複しているFrameworkの削除とその結果
- 1.の対処を行なった結果、"Linked Frameworks and Libraries" に同名のframeworkが存在していたの削除
→ 結果変わらずクラッシュするまま。
3. Carthageの再updateと"Run script…“のチェックボックスを外す
直前問題を起こしていそうな操作を思い出した結果、Carthage自体を0.22へversion upさせていた
- ひとまずCarthageフォルダ直下にあるBuildフォルダを削除。
その後、
carthage update
で再度Build以下を作り、"Linked Frameworks and Libraries"へ入れ直してあげた。
- ひとまずCarthageフォルダ直下にあるBuildフォルダを削除。
その後、
Firebase Crashを使うことで、何故かArchive時に200個以上んwarningが発生。 これの解消方法を探っている時、"Build Phases">“Run Script”>“Run script only when installing"にチェックを入れると解消されるとあり、試したままにしていた。(大量のwarning自体は解消できていない)
- “Build Phases”>“Run Script”>“Run script only when installing"のチェックボックスを外した。
→ 実機実行してもクラッシュせず、Archive後のValidateでもSuccess!! 結局2つのうちどっちが効果あったかは不明だが、"Run script only when installing"が濃厚。 時間がないとはいえ、よくわからないオプションを見よう見まねでつけるのは危険