Androidでデバッグするときには、Logクラスを用いてログを出力することが一般的です。
以前は私もログの出力をLogクラスに頼っていたのですが、最近はちょっと使い勝手が悪く感じる様になってきたので、Hugoというライブラリを使うようになっています。
仕事で知ってからではありますが、これはいいなと思うので紹介します。
HugoというライブラリはJakeWharton先生作なので、かなり安心して利用できるかと思います。
ちなみに、今回もサンプルアプリをGitHubに公開してありますので、そちらも参考にして見てください。
Hugoライブラリの設定方法
まずはライブラリをプロジェクトに読み込みます。
以下のようにbuild.gradleに記述して、ライブラリに組み込みます。
buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1' } }
後、app/build.gradleにapplyの指定を追加します。
apply plugin: 'com.jakewharton.hugo'
これでHugoが利用できるようになりました。
Hugoを利用する
Hugoは利用したいメソッドにアノテーションを付けるだけです。
@DebugLog public String toast(String args1, String args2) { Toast.makeText(this, "サンプルメッセージ", Toast.LENGTH_SHORT).show(); return args1 + args2; }
@DebugLogとつけるだけで、上記の例ではtoastメソッドの引数と戻り値、更にメソッドの処理にかかった実行時間も以下のように取得できるので、アプリの動作が重いときのパフォーマンス改善などに役立つ情報が手軽に手に入ります。
01-26 23:43:22.530 16794-16794/net.buildbox.sample.sample_hugo V/MainActivity: ⇢ toast(args1="Hello, ", args2="World!") 01-26 23:43:22.540 16794-16794/net.buildbox.sample.sample_hugo V/MainActivity: ⇠ toast [10ms] = "Hello, World!"
それでもLogクラスは有用
このライブラリを知る前だったら、各メソッドの開始直後にLog.dメソッドを使ってログを出力するコードなどをよく書いていましたが、それも不要になります。
これでLogクラスの利用はかなり減りますが、完全になくなるわけではありません。
Hugoライブラリではメソッド内の処理実行途中の状態を知りたい場合には対応していないので、状況に応じた使い分けが必要になります。
ここはアプリによってくるところですので、手持ちのアプリで状況に合わせて使い分けてください。
シンプルなHugo、上記のサンプルコードが参考になれば幸いです。
他にも以下のような記事を書いていますので、良ければ参考にしてみてください。
また、最近Flutterの記事を書き始めていますので、そちらも参考になる所があれば嬉しいです。
開発のノウハウに関する情報は以下にまとめて行っていますので、こちらをみてもらえtら、他のノウハウでお役に立てるものがあるかも知れません。