Appleから送られたログの解析方法【iOS】

■はじめに

Appleからリジェクトの際などで送られてきたアプリのクラッシュログの解析方法をまとめます。(順次更新します。)

Apple公式のクラッシュログに関する説明はこちら

■手順

Exception Typeを確認して、どのような理由でのクラッシュか?を確認する。

タイプ 大まかな理由
EXC_BREAKPOINT オプショナル型がnilだった、型変換に失敗したなど
EXC_CRASH 例外が発生したがキャッチされなかった(Objective-Cの場合?)

Triggered by Threadを確認して、どのスレッドで起きているクラッシュか?を確認する。

以下の記事を元に、クラッシュログを復元する。

開発環境以外のクラッシュログの確認方法【iOS】 

クラッシュログで一部のログが復元されない場合【iOS

これで、最低限解析できる状態になっていると思います。

クラッシュログで一部のログが復元されない場合【iOS】

■はじめに
dSYMを使用してログを復元させた際に、一部のログで復元されないものがある。

その部分的な復元方法を以下にまとめます。

■手順
確認したいログのバージョンの「.ipa」を取得する。

(リリースビル度の場合は、「Archive」画面で対象のビルドを右クリックして「Show in Finder」で取得できます。)

取得したIPAを以下のコマンドで解答する。

unzip [アプリ名].ipa

以下のコマンドで、ログの復元ができる。

※「app_name」は「Payload」ディレクトリ内に入っているファイルの名前です。

※「短いアドレス」「長いアドレス」はログファイルから取得してください。

atos -o [app_name].app/[app_name] -arch arm64 -l [短いアドレス] [長いアドレス]

  • Lang Select –
    data-line属性値
    ファイル名

開発環境以外のクラッシュログの確認方法【iOS】

■はじめに

開発環境であれば、Xcodeにログが出るので、クラッシュしてもすぐに分かります。

ただ、開発環境以外でAdHocなどでテストしてた場合、ログが見れないので調査が難航することがあります。

crashlyticsなどを組み込んでおけば、解析は楽ですが、それができないケースもあると思います。

ここでは、crashlyticsなどを使用せずにクラッシュログを確認する方法を記載します。

■手順(iOS)(ips)

クラッシュが起きた端末で以下の操作をしてください。

iOSのバージョンによって多少操作方法が異なる場合があります。

「設定」アプリ起動 -> 「プライバシー」 -> 「解析および改善」 -> 「解析データ」

「解析データ」にずらっとログの一覧が表示されます。

そこから、以下を探してタップします。

※日時はクラッシュが起きた日時です。

[アプリ名]-[yyyy-MM-dd-HHmmss].ips

ログを開いたら、「共有」でAirDropなどで解析するMacにログを送ってください。

■手順(Mac)(dSYM)

「dSYM」を用意します。

※「dSYM」とはクラッシュログを人間が読める形にするために必要な情報です。

以下で、テストに使用したアプリを探します。

「Xcode」を開く -> Window -> Organizer

テストに使用したアプリを右クリックし、「Show in Finder」を押下する。

対象のアプリ(日時などを確認)の「.xcarchive」を右クリックして「パッケージの内容を表示」を押下する。

以下のファイルを取得する。(コピーしておくなど)

※ライブラリを使用していると、「dSYMs」配下に複数のdSYMがある場合があります。

※「[アプリ名].app.dSYM」だけ使用するので間違えないようにしてください。

/dSYMs/[アプリ名].app.dSYM

■手順(Mac)(ログ生成)

■手順(iOS)(ips)」で取得した「.ips」ファイルと、「■手順(Mac)(dSYM)」の「.app.dSYM」を同じディレクトリにコピぺする。

ターミナルを起動し、以下を実行する。

※初回のみ

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

「cd」コマンドでipsとdSYMが入っているディレクトリをカレントディレクトリにする。

以下のコマンドでログを生成する。

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v [ipsファイル名].ips [アプリ名].app.dSYM > crash.log

ディレクトリに「crash.log」が生成されているので、このファイルがクラッシュログです。

中身が空っぽの場合には何かが間違えているので、dSYMがテストしたアプリの物か?など調べてみてください。

「年次自己分類レポート」の提出方法【iOS】

■はじめに

本記事は、個人で調べてまとめた内容です。

筆者は法律に精通している訳では御座いませんので、あくまで自己責任でご覧ください。

また、記載ルールや提出方法など、変更になる可能性はあるので、ご注意ください。

詳しくは、「こちら」の公式サイトをご覧ください。

■「年次自己分類レポート」とは?

iOSAndroidのアプリは、アメリカのサーバーに配置されている各Storeからダウンロードして利用されます。

つまり、扱いとしては、「アメリカからの輸出」という扱いになります。

アメリカから輸出」する商品(アプリ)に暗号化が利用されている場合には、「年次自己分析レポート」というレポートを提出する義務が課せられます。

(暗号化には、HTTPS通信なども含みます。)

■「年次自己分類レポート」の提出方法

こちら」から年次自己分析レポートのサンプルをダウンロードします。

・年次自己分析レポートに必要情報を記載します。(書き方は後記します。)

・「crypt-supp8@bis.doc.gov」「enc@nsa.gov」宛にメールにて提出する。

これだけです。

ちなみに、アプリを公開した翌年の2月までに提出する必要があるようです。

また、毎年、同様の提出が必要なようです。(変更していなくても)

詳しくは、「こちら」を参照してください。

■「年次自己分類レポート」の書き方

年次自己分析レポートの書き方は、ダウンロードしたサンプルを元に書くだけです。

それぞれの項目には以下のように書いていってください。(項目の角カッコ内に「※」がついているものは、それぞれ書き換えてください。)

【※PRODUCT NAME】
アプリ名
【※MODEL NUMBER】
App StoreのSKU
【MANUFACTURER】
SELF
【ECCN】
5D992
【AUTHORIZATION TYPE】
MMKT
【ITEM TYPE】
Mobility and mobile applications n.e.s.
【※SUBMITTER NAME】
送信者の名前(フルネーム)
【※TELEPHONE NUMBER】
連絡先の電話番号
【※E-MAIL ADDRESS】
連絡先のメールアドレス
【※MAILING ADDRESS】
郵便番号・住所
【NON-U.S. COMPONENTS】
NO
【※NON-U.S. MANUFACTURING LOCATIONS】
制作場所