«

Jan 13

Android アプリのStack Trace情報をサーバーに転送する方法

ライブラリーを紹介させて頂きます。
android-remote-stacktraceです。
  • アプリ設定
    • 上記サイトでtrace.jarをダウンロードして、ライブラリーパスに通す。
    • インターネットに接続する権限設定
      manifestに以下を追加し、インターネットに接続する権限を追加。

      <uses-permission android:name="android.permission.INTERNET">
    • 例外処理ハンドラーを登録
      Service, IntentService, ActivityクラスのonCreateメソッドをOverrideし、

      ExceptionHandler.register(this, “エラー情報を処理するphpファイルまでのURLパス");
      

      を追記する。Activityの数は多いので、すべてのActivityに書くのは大変かと思うので、
      BaseActivityクラスを継承するような設計にしておけば、BaseとなるクラスのonCreateメソッドに
      書くだけで済む。

  • サーバ設定
    • サイトに上がっているが、以下のphpファイルを設定
      <?php
      	// データが正しくない場合、エラーメッセージのページを見せる。
              if ( $_POST['stacktrace'] == "" || $_POST['package_version'] == "" || $_POST['package_name'] == "" ) {
                      die("This script is used to collect field test crash stacktraces. No personal information is transmitted, collected or stored.<br/>For more information, please contact <a href='mailto:support@nullwire.com'>email@domain.com</a>");
              }
              $random = rand(1000,9999);
              $version = $_POST['package_version'];
              $package = $_POST['package_name'];
              $handle = fopen($package."-trace-".$version."-".time()."-".$random, "w+");
              fwrite($handle, $_POST['stacktrace']);
              fclose($handle);
      
              // メールに例外情報を送信する場合、以下のメールに送信先メールアドレスと、送信元メールアドレスを修正し、コメントアウトを外す。
              //mail("mads.kristiansen@nullwire.com","IMPORTANT: Exception received (".$version.")",$_POST['stacktrace'], "from:bugs@nullwire.com");
      ?>