「バージョン###で不足しているdSYMがCrashlyticsで検出されました」の通知
結論:XcodeのArchivesからdSYMsを見つけ、zipにして管理画面からアップロードする
2023/4/23 Flutter エラー・バグ日記
ネットに多くの情報があったので楽勝かと思いきや、うまく行かず、、解決にかなり苦労した。。
エラーログ把握のため、Firebase Crashlyticsを導入しているアプリ(Flutterで開発)について、Firebaseから下図のようなメールが届いた。
Firebase Crashlyticsの管理画面を見ると、確かに警告状態になっていた。
恥ずかしながら「dSYM」が何なのか全く知らなかったが、ざっくり言うとデバッグ情報が含まれたファイルらしい。
以下にFirebase公式の説明があるが、今ひとつ理解が進まず、、、ネット上の記事を探すことにする。
AppStoreからダウンロードを試みるも、見つからない。。
多くの情報が見つかるが、まずは手軽そうに思われた下記記事を参考にさせていただく。
こちらの情報によると、「Test Flight」タブ→「ビルドのメタデータ」→「シンボルを含む」のところに、「dSYMをダウンロード」があるはずなのだが、なぜか自分の画面にはない。。
理由を調べると、こちらのFirebase公式
にあるとおり、
Xcodeの「Runner」→「Target」→「Build Settings」→「All」選択→「debug information format」で検索→「Debug Information Format」を「DWARF with dSYM File」に設定(「Release」と「Debug」のいずれでも)
がされていないと、dSYMが生成されないとのこと。
しかし、自分の場合は既に設定済だった。。
そのため、dSYMを入手する別の方法を探すことにした。
Finder上でファイルを確認し、コマンドで送信するも、反映されない。。
次に分かりやすそうだった下記記事を参考にさせていただく。
この方法に沿って、まずは、XcodeでProduct Archiveした後の
/Users/####/####/####/build/ios/Release-iphoneos
※「/Users/####/####/####」の部分はFlutterのプロジェクトフォルダのパスを仮表記したもの
のフォルダに「Runner.app.dSYM」があることを確認(今回の警告対象となっているバージョンを作成した際のアーカイブがそのまま残っていた)。
そのため、「Runner.app.dSYM」を下記コマンドでアップロードした。
/Users/####/####/####/ios/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/####/####/####/ios/Runner/GoogleService-Info.plist -p ios /Users/####/####/####/build/ios/Release-iphoneos/Runner.app.dSYM
※「/Users/####/####/####」の部分はFlutterのプロジェクトフォルダのパスを仮表記したもの
仕組みとしては、Firebase Crashlyticsに内包されている「upload-symbols」というスクリプトを使ってアップロードする、ということらしい。
こちらの情報が非常に参考になったm(_ _)m。
当初、このアップロードのコマンドがなかなか通らず苦労した。。
主に発生したエラーは以下。
- zsh: no such file or directory: ../Pods/FirebaseCrashlytics/upload-symbols
- error: Unable to read Google Service plist at path GoogleService-info.plist
自分の理解が乏しいためだが、、コマンド内のパス部分の書き方が、ネットの情報では諸説ある印象だった。
試行錯誤の結果、最終的に、
- upload-symbols
- GoogleService-Info.plist
- Runner.app.dSYM
いずれも絶対パスで記載する形にしたら、
Successfully uploaded Crashlytics symbols
と表示されて、アップロードが成功した。
しかし、、Firebase Crashlyticsの管理画面の警告が消えない。
反映されるまで時間がかかる、との情報もあったので、丸1日待ってみたが、結局、解消しなかった。。
zipファイルにしてアップロードするも、解消しない。。
最初に参考にした記事では、zipファイルをFirebase Crashlyticsの管理画面からアップロードする方式が紹介されていた。
そこで、「Runner.app.dSYM」をzipにしてアップロードしたところ、アップロード自体は問題なくできた。
しかし、、やはり丸1日経っても警告は消えなかった。
Xcode上から開くと解消できた!【解決】
放置するしかないか、、と諦めかけたところで、
の記事から参照されている
のQ&A記事を見つける。
こちらに、とても丁寧なアニメーションGIFを用いた回答がなされていた。
大まかには、
- Xcodeの「Window」→「Organizer」で、Product Archiveの履歴画面を出し、
- 該当するバージョンのArchiveをFinderで開き
- 「Runner・・・.xcarchive」を「パッケージの内容を表示」で開き、
- 「dSYMs」というフォルダをzipにし、
- Firebase Crashlyticsの管理画面からアップロードする
というもの。
確かにこの方法を実行したら、一発で警告が消えた!
アップロードした「dSYMs」は、Flutterプロジェクトのフォルダ内ではなく、Xcodeのフォルダ内にあったので、どうやらアップロードすべきものが違っていた模様。。
\一般的なエラー対処法をまとめた記事はこちら/
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/