mattak's blog

人生を1ミリ進める

AndroidのLogを改良しよう3

課題

つくろうとしてるライブラリでは、Annotationを用いて、code injectionを行いログをinsertしようとしていた。 Lombokがすでにやっているんだから、簡単だと思っていたがどうやらそうではないようだ。

わかったこと

  • 基本的にAnnotation Processingでアノテーションもとのクラスを編集することはできない。
  • Lombokではjavacの非公開APIを使用する、故にeclipse内部のcompiler APIに介入する必要がある
  • javacでCompile時にAST(Abstract Syntax Tree)の変換ができれば、裏のAPIに頼る必要はない
  • 原理的にJDKEclipseが更新されるたびにパッチを当てる必要がある
  • groovyでは公式にコンパイル時のAST変換をサポートしている

groovyでもAndroidサポートがmergeされたようだし(http://rejasupotaro.github.io/2014/06/05/49.html)、やるならgroovy層でやる方が良さそう。とりあえず、groovyのASTを勉強しつつ、普通にLog機能を実装しよう。。