SenTestingKit.frameworkを追加したらアプリが立ち上がらなくなった

正確に言えば、「アプリが立ち上がらなくなったという報告を受けた」です。

事の発端

iPhoneアプリの改善をして、チームメンバーにTestFlightで最新バージョンを送信しました。しかし、全員から「立ち上がらない。起動画面が開くとすぐに落ちてしまう。」という報告を受けます。僕のiPod touchとiPhoneでは立ち上がるのに、なぜ?

クラッシュレポートを送ってもらう

iPhoneはクラッシュした時にクラッシュレポートというものを保存するようになっています。
クラッシュログの見方(配布済みアプリのバグ調査方法)
クラッシュレポートは、全てのアプリについてiOS側で自動で保存するようになっています。アプリが落ちてムカついた時はApp Storeのレビューに書くのではなく、クラッシュレポートを取り出して開発者に送るとお互いに幸せになれると思います。
これをメンバーの一人に送ってもらいました。

Dyld Error Message:
Library not loaded: /Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit
Referenced from: /var/mobile/Applications/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/My365.app/My365
Reason: image not found
Dyld Version: 199.5

どうやら、SenTestingKit.frameworkがないと怒られているらしい。僕のiPod touchとiPhoneは開発時にXcodeと接続しているので勝手に導入されていたのかもしれません。

SenTestingKit.frameworkをoptionalにする

ユーザーが使うことのないフレームワークでクラッシュしていたとは・・・。解決策は、「このフレームワークがなくても、問題なく実行を継続しなさい」という意味で、SenTestingKit.frameworkをoptionalにすることです。

再びチームメンバーにTestFlightで新しいバージョンを送信すると起動したと報告がありました。随分ハマりこんで3日くらい使いましたが、クラッシュレポートを送ってもらったら一発で解決しました。問題があったら、まずログを送ってもらうことですね。

おまけ

クラッシュログは結構深いところに置かれていて探してもらうのは大変なので、Macの場合はターミナルで以下の1行を打ち込んでもらうと良いかもしれません。(事前にiTunesでiPhoneを同期する必要があります。)
[cc]
tar zcvf ~/Desktop/crashlog.tar.gz ~/Library/Logs/CrashReporter/MobileDevice
[/cc]
実行するとデスクトップにcrashlog.tar.gzというファイルができるのでこれを送ってもらうだけで済みます。他のアプリなどのレポートも含まれてしまうので、そういうのを気にする場合は注意してください。

コメント

タイトルとURLをコピーしました