背景
最近看了AspectJ在Android中应用的视频,自己顺手联系了一下,中途也发现了不少坑,不过收获也挺不错,网上也有大把的教程,原来不准备再发一篇文章,但是发现少数博客中提到的单独的module中配置,然后其他地方引用的方案行不通,也顺便做一下笔记。
AspectJ在Android Studio中的配置
首先要在根目录下的build.gralde文件中dependencies
添加如下依赖配置:
dependencies {
classpath 'org.aspectj:aspectjtools:1.9.6'
classpath 'org.aspectj:aspectjweaver:1.9.6'
}
AspectJ在主module和依赖的module中的配置略微有点区别,我先贴一下主module中配置,直接copy进我们的主module中的build.gradle文件最下面,最外层的{}
符号外面即可
import org.aspectj.bridge.IMessage
import org.aspectj.bridge.MessageHandler
import org.aspectj.tools.ajc.Main
final def variants = project.android.applicationVariants
variants.all {
variant ->
JavaCompile javaCompile = variant.getJavaCompileProvider().get()
javaCompile.doLast {
String[] args = ["-showWeaveInfo",
"-1.5",
"-inpath", javaCompile.destinationDir.toString(),
"-aspectpath", javaCompile.classpath.asPath,
"-d", javaCompile.destinationDir.toString(),
"-classpath", javaCompile.classpath.asPath,
"-bootclasspath", android.bootClasspath.join(
File.pathSeparator)]
MessageHandler handler = new MessageHandler(true)
new Main().run(args, handler)
def log = project.logger
for (IMessage message : handler.getMessages(null, true)) {
switch (message.getKind()