「dSYM の欠損」に対応する | iOS | Flutter 3.29.0 | Crashlytics | Firebase
セルフプレジャー(自慰行為)を記録&管理するアプリ『アイナーノ』の Ver.7.0.0 で「Firebase Crashlytics」に対応したのですが、リリース直後に「dSYM の欠損」というメールが Google (Firebase) から届きました。
内容は以下の通りで「不足している dSYM」「バージョン 7.0.0 (42) で不足している dSYM が Crashlytics で検出されました」と記載されています。
そして、メール内の「dSYM をアップロード」ボタンをクリックして表示された画面には、以下が掲載されています。
リリースしたアプリに問題が?
実は「Firebase Crashlytics」に対応した際、その全容を理解していませんでした。
結論…「dSYM の欠損」は、リリースしたアプリには影響がなく、何らかの不具合が発生している、という警告ではありません。アプリを利用するユーザには関係がありません。
これは、アプリ内で何らかのエラーが発生して、それが Crashlytics に登録された際に、その詳細を解析できない・把握できない、という警告です。
アプリを運営していく上でエラー解析は必須なので、無視できません。要対応です。
「dSYM」とは?
dSYM は「Debug Symbol File」の略です。
このファイルは、iOS アプリのデバッグやクラッシュ レポートの解析に使用されます。アプリをビルドする際に生成されるもので、シンボル情報(関数名、行番号、変数名など)を保持しています。
これを処理して、難読なクラッシュログを人間が理解できる形式に変換します。
「dSYM」はどこ?
ビルド時に生成された dSYM が何処に格納されているのか分からないので「dSYM ファイルが見つからない場合 方法」を参照します。以下のページが表示されます。
Crashlytics ダッシュボードで読み取り可能なクラッシュ レポートを取得する
https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?hl=ja&platform=ios
まず、冒頭で気になった記載があります。
「通常、この動作はアプリの Crashlytics の初期設定時に構成します。具体的には、アプリのビルドフェーズで dSYM ファイルを自動的にアップロードする実行スクリプトを追加して構成します。」
つまり、初期 Crashlytics 導入時に、dSYM 自動アップロードのスクリプトを Xcode に組み込む必要があったのです。
はい…そうしていないのは仕方がないので、今は既に生成された dSYM を探します。
ローカルマシン上で dSYM を見つける
https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?hl=ja&platform=ios#locate
上記参照では、コマンドを実行して dSYM を検索する方法が紹介されていますが、後述されている Xcode 上からダウンロードする方法が直感的で分かりやすく簡単です。
ただ、迷った操作があるので、以下に少し補足します。
- Xcode で [Organizer] ウィンドウを開いて、リストからアプリを選択します。Xcode に、プロジェクトのアーカイブのリストが表示されます。
(補足)Xcode の [Window] に [Organizer] があります。 - Ctrl キーを押しながらアーカイブをクリックして、Finder に表示します。もう一度 Ctrl キーを押しながらクリックし、[Show Package Contents] をクリックします。
(補足)Runner ~ .xcarchive ファイルに対して [パッケージの内容を表示] を選択します。 - .xcarchive 内にある dSYMs ディレクトリには、Xcode のアーカイブ プロセスの一環として生成された dSYM が格納されています。
(補足)dSYMs という名前のディレクトリを丸ごと ZIP 圧縮します。
こうして得た dSYM .zip ファイルを、Firebase 画面でアップロードします。
これで完了です。
以下のように「アップロード済み」になって、クラッシュ レポートが読めるようになりました。
コメント
コメントを投稿