AndroidでAOP?

Twitterで@esmasuiさんにこんなものを教えて貰って愕然とした。
android-aspectj/ Google Code

ご存知の通りAndroidアプリケーションはJavaVMではなくDalvikで動作しており、AspectJが吐くJavaバイトコードはDalvik上では動かない。果たしてどのような実装にしているのか、AspectJを一からDakvik用に書きなおしたのか? とわくわくしてリポジトリを見たのだが..

Pune GTUG: Adding Aspect to Android

このブログによると、このプロジェクトの仕組みは

1. Javaコンパイラによりソースコードを.classファイルにコンパイルする
2. AspectJコンパイラにより、ポイントカットやアドバイスをウィーブ済みの.classファイルを生成する
3. 2.で生成した.classファイルを.dexファイルに変換する

これらをAntやMavenで統合し実行することでAspectJを使用可能とするもののようで、なるほどと膝を打つと同時にがっかりした。※

※ということは、AOPの醍醐味であるオンザフライで型(ある型を拡張した型)を生成することはできないってことだろう。