Google Playで配布しないアプリにANRログ機能を実装する

Google Playで配布しないアプリにANRログ機能を実装する

前回、Google Playで配布しないアプリにクラッシュログ機能を実装するという記事を書きましたが、ここで使ったACRAというライブラリでは、ANRの場合のログは送信できません。
ANRとは、Application Not Respondingでアプリでの処理に時間がかかっているなどの理由から応答がない場合に発生する問題です。
○○アプリは応答していません。このアプリを終了しますか?
というダイアログが出るアレです。

これに挑戦するため、次のようなライブラリをSalomonBrysさんが作ってくれています。

ANR-WatchDog
https://github.com/SalomonBrys/ANR-WatchDog

使ってみました。とりあえず、設定も超簡単です。

  1. まず、

ACRA
Crashlytics
HokeyApp
のどれかのクラッシュログレポート機能を実装しておきます。

  1. 次に、次のリンクからanrwatchdog-1.1.1.jarをダウンロードします。

https://search.maven.org/remote_content?g=com.github.anrwatchdog&a=anrwatchdog&v=LATEST

  1. ダウンロードしたanrwatchdog-1.1.1.jarをプロジェクトのlibsディレクトリにコピペして入れます。
  2. ここではACRAを利用しているので、ACRAでの設定方法を書いておきます。

Google Playで配布しないアプリにクラッシュログ機能を実装するで作った
MyApplication.javaに、次の一行を足します。

 public class MyApplication extends Application {
 
    @Override
    public void onCreate() {
       // The following line triggers the initialization of ACRA
       super.onCreate();
       ACRA.init(this);
      
       new ANRWatchDog().start(); //これを足す
 
      }
    }
     
 }

これで設定は終わりです!
簡単ですね!

さて、ためしてみます。
ANRWatchdogは、UIスレッドが5秒とまっていたら発動する、という仕組みになっています。(5秒は変更が可能です)

下記のように、Activityに書いてみて、Activityを10秒とめてみましょう。

 try{
 
       Thread.sleep(10000);
 
     }catch (InterruptedException e){
             
        Log.e(TAG, "えらー");
          
  }

きました。

crash_log.png

しかし、まだまだこのANRWatchdogが使えるかどうかわかりません・・・

しばらくこちらで試してみます。

後日談:使ってみて、逆にこのANRWatchdogのせいでクラッシュが起きる事態が起こったりしています…。[sad] まだ未完成、ということなんですかね。今後に期待です!!

Google Playで配布しないアプリにクラッシュログ機能を実装する

Android

Google Playで配布しないアプリにクラッシュログ機能を実装する

Google Playで配布するAndroidアプリには、クラッシュログを送信する機能があります。
クラッシュログが回収できると、不具合解決に大変役立ちます。
しかし、世の中には下記のようないろんなケースで、Google Playで配布しない場合もあるのではないでしょうか?

  • まだまだ開発途中すぎるAndroidアプリ
  • 一部のお客さんだけに配布したいAndroidアプリ
  • Google Playの規約に沿わないので、Google Playに公開できないアプリ

などなど、さまざまな理由があると思われます。

クラッシュログ送信機能がないと、多種多様すぎるAndroidの端末、さまざまな環境で試される場合の不具合修正が大変困難です。

しかし世の中便利なもので、クラッシュログを送信できるライブラリを作ってくれている人がいます。
それが、ACRA(Application Crash Report for Android)です。

ACRA
http://www.acra.ch/

インストールと利用方法も大変簡単です!
ここでは、クラッシュログをメールで集める方法を紹介します。

私はまだEclipseを利用していますので、jarファイルをコピーする方法を使います。

  1. 上記のページのDownload ACRAと書いてあるところから、ファイルをダウンロードします。
  2. その中から、acra-4.6.1.jar(この記事を書いている時点でのバージョン名です)をコピーして、eclipseのプロジェクト内のlibsにペーストします。
  3. AndroidManifestに一手間加えます。Applicationのタグのところに、下記のようにandroid:name=”MyApplication”を追加します。
  4.    <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:largeHeap="true"
            android:theme="@android:style/Theme.Holo.Light"
            android:name="MyApplication"
          >
    

    下記ではクラッシュレポートを送信する時に、ダイアログを表示するモードを利用していますが、ダイアログ表示のアクティビティもAndroidManifestに書いておかないといけません。

     <!-- クラッシュレポート用 -->
     <activity android:name="org.acra.CrashReportDialog"
    

    android:process=”:error_report”

        	   android:launchMode="singleInstance"
               android:excludeFromRecents="true"
               android:finishOnTaskLaunch="true" />
    
    1. MyApplication.javaというクラスを作ります。下記のように書いておきます。
    2.  package smart.location.admin.hogehoge;
       
       import org.acra.*;
       import org.acra.annotation.*;
       
       import android.app.Application;
       
       @ReportsCrashes(
              mode = ReportingInteractionMode.DIALOG,
              mailTo = "hogeccho@onlineconsultant.jp", //送信したいメールアドレス
              resToastText = R.string.crash_toast_text, // optional, displayed as soon as the crash occurs, before collecting data which can take a few seconds
              resDialogText = R.string.crash_dialog_text,
              resDialogIcon = android.R.drawable.ic_dialog_info, //optional. default is a warning sign
              resDialogTitle = R.string.crash_dialog_title, // optional. default is your application name
              resDialogCommentPrompt = R.string.crash_dialog_comment_prompt// optional. When defined, adds a user text field input with this text resource as a label
       )
       public class MyApplication extends Application {
       
          @Override
          public void onCreate() {
            // The following line triggers the initialization of ACRA
            super.onCreate();
            ACRA.init(this);
            
          }
          
       }
       
      
      1. strings.xmlに次のように書いておきます。
      2.     <string name="crash_toast_text">クラッシュしました</string>
            <string name="crash_dialog_text">クラッシュログを送信します</string>
            <string name="crash_dialog_title">アプリがクラッシュしました</string>
            <string name="crash_dialog_comment_prompt">何かコメントがあればお願いします。</string>
        

        これで終わりです!

        クラッシュしたときに、次のように表示されます。
        crash_log.png

        ユーザーが何かコメントを入力すると、次にメールのアプリが立ち上がり、メールを送信してきてくれます。
        便利です[smile]

        しかし、このクラッシュログは動作するのはクラッシュのときだけです。
        クラッシュとは、アプリが落ちるアレです。
        ANRはこれでログを送信できません。
        ANRとは、Application Not Respondingでアプリでの処理に時間がかかっているなどの理由から応答がない場合に発生する問題です。

        ANRの場合のログを送信するのにも挑戦したいと考えました。次の記事で紹介します。

        Google Playで配布しないアプリにANRログ機能を実装する

Google Wallet お支払い設定で口座情報が入力できない

Googleツール
Android

Google Wallet お支払い設定で口座情報が入力できない

Google Playで有料のアプリを販売したり、アプリ内アイテムを販売すると、Googleさんからその報酬を受け取るために、Google Walletに銀行口座を入力する必要があります。

しかし、私は最初、どうしても口座の登録ができませんでした。

どうやら最初に入力した銀行口座の情報が間違っていたようで、
「テストデポジットができませんでした。」
というエラー情報が表示され、赤字に白い字で
「お支払い情報がありません。口座情報を確認してください」
というメッセージが常に表示されるようになります。

そのあとは、「口座を追加」というボタンをクリックして、口座情報をどう入力しても、
「エラー」
とか、
「口座情報を入力してください」
と表示されて、まったく進みません。

フィードバックに送信しても、何も返事もありません。

で、こちらに入力して問い合わせてみました。
もちろん英語で問い合わせる必要があります。[sad]
https://support.google.com/payments/?hl=en#contact=1

「英語でスクリーンショットを撮ってほしい」
とか、最初言われたのですが、Google Walletには日本語とか英語の切り替えがないんですよね。[sad]

とか紆余曲折ありましたが、結局最初に間違った口座情報が入っていると、どうにも次が追加できないようです。
管理画面で削除はできないので、Googleのサポートさんが削除してくれました。

どうやら口座の名義人は、半角カタカナで入力しないといけないようです。

やっと口座が入力できました。[smile]

Google ドライブを使ってみる

Googleツール

2012年4月25日にリリースされたGoogleドライブを使ってみました。
5G、無料のオンラインストレージとはすごいと思います。

  1. 下記から右上の「無料の5GBを使ってみましょう」をクリックします。

https://drive.google.com/start#home

  1. ダイアログに沿ってGoogleアカウントなどを入力していくと、ダウンロードが始まります。
  2. Googleドライブをインストールすると、「Google Drive」というフォルダが作られ、連携しているGoogleアカウントで所有しているGoogle Docsのファイル達がここへダウンロードされます。とはいっても、ファイル本体がダウンロードされるのではなく、Google Docsのファイルへのショートカットのようです。

今のところの使い勝手は、Dropboxとそれほど変わりません。。。

しかし、便利なのは、Photoshop、Illustratorのデータを閲覧することができることです!
いちいち、Photoshopのライセンスを買わなくっても、どんなファイルかはわかるのです。
また、Photoshop、Illustratorのファイルってそれぞれ重いから、プレビューがちゃちゃっとできるのはうれしいですね。

Adobeの出しているBridgeというソフトもありますが、使い勝手が悪いですしw

ちなみに、PSDやAIのファイルを編集できる機能はありません…。
残念。
今のところ、画像内の日本語を検出して、検索できたりもしないようです。