本記事はサムザップ Advent Calendar 2022 の12/21の記事となります。
はじめに
2022年11月30日より、Android Vitalsにてクラッシュ率及びANR率が高いアプリには
GooplayPlayストア上で警告がでる可能性があるとのことで今回自社アプリでの調査を強化するため対応進めていました。
Android VitalsにはクラッシュやANRが発生した際のスタックトレースが蓄積されるのですがそのままだと難読化されていて読み解こうにもはっきりとはわかりません。
シンボリケーションを行い、人が見てわかるように難読化を解除する必要があります。
そのために必要になるのがGooglePlayConsoleにアップロードするためのシンボリケーションファイルとなります。
よくよく思い返せば簡単なことなのですが備忘録もかねて記事とさせていただきます。
※2022/12時点での情報になります。
今後GooglePlayConsoleのページ構成やUIなどが変更になる可能性があります。
【作業環境】
・MacOS Big Sur (11.6.8)
・Unity2020LTS (3.34.f1)
つまずきポイントがあった!
大したことないと思われるこの作業。
いざ対応しようと思うとおそらく下記につまずくはずです。
-
GooglePlayConsoleにアップロードする際に300MBの制限がある。
Unityから出力されたSymbols.zipは1GB以上。 -
MAC OS標準の圧縮だとエラーでアップロードできないため一手間必要。
AndroidNativeDebugSymbolsの作成
シンボリケーションファイルの作成については下記にある[Cleate Symbols.zip]チェックを入れてビルドを行うことでAPK or AABファイルと共に出力されます。
これだけで簡単にUnityから出力できます!
参考資料:『Symbolicate Android crash』
GooglePlayConsoleにアップロード
アップロード先はGooglePlayコンソールより該当のアプリを選択、AppBundleエクスプローラー、該当のアプリバージョンのファイルを選択、ダウンロードのタブのアセットの項目内にネイティブデバッグシンボルがありますのでこちらのアップロードボタンを押します。
出力されたファイルをアップロードしてみます。(第1の壁)
下記のエラーが発生しアップロードできませんでした。上記のように
Your native debug symbols are too large (----- MB). Must be 300 MB or smaller
のエラーが表示されアップロードできませんでした。
300MBを超えるファイルは扱えないよというエラーです。
もともとUnityから出力されているZipファイルでファイルサイズはギガバイト単位と大幅に超えていました。
しかし、このzipファイルが曲者で、解凍して再度Zip圧縮をかけることでサイズが大幅に小さくなるのでした。
これでファイルサイズの件はクリアできました。
(これでもサイズがオーバーする場合はAndroidStdioを利用し必要な箇所に絞るなどしてシンボリケーションファイルを小さくする必要がありそうです。)
圧縮しなおしたZipファイルをアップロードしてみます。(第2の壁)
すると今度は
The native debug symbols contain an invalid directory __MACOSX. Only Android ABIs are supported.
のエラーが表示されてしまい、またまたアップロードできませんでした。
エラーの原因はMacのOS標準の圧縮だとMacの為のリソースフォークという余計な情報が含まれてしまうことでした。
(ファイルのコンテクストメニュー(右クリックのメニュー)で表示される圧縮の項目)
そのため最初からターミナルなどでzipコマンドで圧縮するか、
圧縮したzipファイルから不要な情報を削除しましょう。
今回はzipコマンドを使用し、後から削除する方法を取りました。
不要情報の削除については下記のコマンドで可能です。
zip --delete [Zipファイルパス] "*__MACOSX*"
上記を実行すると
このように不要な情報が削除されます。処置をしたzipファイルをアップロードしてみます。
アップロードが無事に完了すると下記のようになります。
実際にアップロードしたzipファイル名とは異なりますが自動で書き換わるようです。
これにて一件落着です!
(実際の問題解決はこれからなのでやっと調査のスタートラインに立つことができました。。。)
参考資料:『クラッシュのスタック トレースの難読化を解除する、シンボリケートする』
おわりに
これで問題を調査する準備が整いました。
Android Vitalsにてクラッシュ率及びANR率が高くなってしまっているアプリはこれで詳細な調査を行い
改善につなげることができるかと思います。
それでは明日は@cat_servantさんの記事です。
お楽しみに!