面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

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に追加とその結果

stackoverflow.com

  • Embedded BinariesにDynamic Libraryを入れる

→ 確かにクラッシュはしなくなる。動作も問題ない。 しかし、ArchiveしてiTunes ConnectにUploadする時、ValidateでErrorが発生する 内容は、Realm.frameworkにx86_64, i386のarchitectureは含まれていない。と。 ただ実行したいだけであればいいが、今回はStore申請も絡んでいるので却下。

2. 重複しているFrameworkの削除とその結果

uchinoinu.hatenablog.jp

  • 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"へ入れ直してあげた。
  • Firebase Crashを使うことで、何故かArchive時に200個以上んwarningが発生。 これの解消方法を探っている時、"Build Phases">“Run Script”>“Run script only when installing"にチェックを入れると解消されるとあり、試したままにしていた。(大量のwarning自体は解消できていない)

→ 実機実行してもクラッシュせず、Archive後のValidateでもSuccess!! 結局2つのうちどっちが効果あったかは不明だが、"Run script only when installing"が濃厚。 時間がないとはいえ、よくわからないオプションを見よう見まねでつけるのは危険