概要
この記事では、AdHoc配布されたアプリ上で発生したクラッシュログを解析する方法について記載しています。
AdHoc配布
AdHoc環境でのアプリ配布は、以下の様な方法があります。
いずれの方法で配布した場合でも、以降で記載するクラッシュログ解析方法は適用可能です。
クラッシュログを取得
この項目では、AdHoc環境で配布されたアプリのクラッシュファイルを実機端末から取得する方法を解説しています。
ipsファイルの取得
アプリのクラッシュログは、.ipsという拡張子ファイルに暗号化された情報が記載されているため、まずはこのクラッシュログファイルを実機端末から取得します。
- 実機端末内にある設定アプリの「プライバシー」→「解析および改善」→「解析データ」を開く
- クラッシュした日付が書かれた
.ipsファイルを探す - AirDropなど任意の方法で解析を実行するmacOSのPCに
.ipsファイルを渡す
クラッシュログの解析
ipsファイルは生成されたままの状態だとクラッシュログが暗号化されているため、クラッシュ時のスタックトレースなどが目視では理解できない状態に鳴っています。
そのため、このipsファイルの中身を確認するにはSymbolicate(復元)をする必要があります。
dSYMファイルの取得
ipsファイルを複合するには、AdHoc配布されたアプリの.dSYMファイルが必要となります。
このdSYMファイルは、アプリプロジェクトを(Xcodeを使って)アーカイブした際に生成されるバイナリの中に格納されているので、そこから取得してください。
参考: https://www.lanches.co.jp/blog/10314
ipsファイルの復号
次に前項で取得したdSYMファイルを使用して、ipsファイルの中身を復号します。
復号をする場合は、Xcodeのコマンドラインツールを使用します。
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v ~/{path_to}/{file_name.ips} ~/{path_to}/{file_name.dSYM} > {output_file.txt}
コマンド中の変数は下記の用に書き換えてください。
-
{path_to}: 当該ファイルの格納されているパス -
{file_name.ips}: 取得したipsファイル名 -
{file_name.dSYM}: 取得したdSYMファイル名 -
{output_file.txt}: 複合した内容を出力するファイル名- ※任意のパスに出力する場合はパスも記載してください。
注意事項
もし上記のコマンドを実行した際にError: “DEVELOPER_DIR” is not defined...の様なエラーが出力された場合、DEVELOPER_DIR変数が適用されていない事で処理が失敗しているため、下記のコマンドを実行して変数を適用します。
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
また、上記の/Applications/Xcode.app/などは、Xcodeアプリの命名を独自で変更している場合に適切な命名に書き換えるようにしてください。
これで再度ipsファイルの復号コマンドを実行すれば、複合されたファイルが出力されるはずです。