AndroidのライブラリプロジェクトでHugoのログを表示する
Androidのメソッドの呼び出しなどでログを表示をアノテーションが付与されているメソッドの呼び出し時に呼び出し時の引数の表示とをログに表示するライブラリです。
ただしAndroidのライブラリプロジェクトではビルドの設定の関係でログが表示されません。
そこでライブラリプロジェクトでもHugoのログを表示する方法を紹介します。
Androidライブラリプロジェクトはビルド時にリリースビルドに標準でなってしまいます。
Hugoはリリースビルドを行うとログを表示しなくなってしまうため今回の現象が発生してしまっています。
そこでbuild.gradleを変更しデバッグビルドでビルドできるようにし、ログを表示するようにします。
まずプロジェクトのbuild.gradleを次のようにhugo-pluginを設定します。
[build.gradle]
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1' } }
次にライブラリプロジェクトのbuild.gradleを次のように変更します。
[samplelib/build.gradle]
apply plugin: 'com.android.library' apply plugin: 'com.jakewharton.hugo' android { compileSdkVersion 24 buildToolsVersion "24.0.0" publishNonDefault true <省略> } dependencies { <省略> }
hugoのプラグインをapplyを追加し、publishNonDefaultをtrueにします。
publishNonDefaultは標準はfalseになっておりBuildValiantsを外部のプロジェクトの公開し、呼び出し側でコントロールすることが可能になります。
この外部からデバッグビルドかリリースビルドかを変更しながらビルドできるようにします。
次にアプリケーション側のbuild.gradleを下記のように変更します。
[app/build.gradle]
apply plugin: 'com.android.application' android { <省略> } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:24.2.1' debugCompile project(path: ':samplelib', configuration: 'debug' ) releaseCompile project(path: ':samplelib', configuration: 'release' ) }
debugCompileおよびreleaseCompileでライブラリプロジェクトを指定し、configurationでライブラリプロジェクトのBuildValiantsを指定してビルドする内容を変更することができます。
この設定を施したら準備完了です。
試しに動かしてみましょう。
ライブラリプロジェクト側のコードを下記のようにしたとします。
[Module.java]
public class Module { @DebugLog public void show(String text) { Log.d("techium", text); } }
@DebugLogのアノテーションをメソッドに取り付けるとアノテーションをつけたメソッドが呼び出されたときにログを表示してくれるようになります。
アプリケーション側で下記のようにしたとします。
[MainActivity.java]
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Module module = new Module(); module.show("ログテスト"); } }
そうした場合にアプリを立ち上げると下記のようなライブラリプロジェクト側のログが表示されるようになります。
10-03 23:12:20.621 861-861/? V/Module: ⇢ show(text="ログテスト") 10-03 23:12:20.621 861-861/? D/techium: ログテスト 10-03 23:12:20.621 861-861/? V/Module: ⇠ show [0ms]