美文网首页面试题
AspectJ在Android中的使用

AspectJ在Android中的使用

作者: Allenlll | 来源:发表于2019-01-22 17:53 被阅读0次

一、简介

AspectJ是一种面向切面编程思想AOP的一种实现方案,是java的一种扩展语言,兼容java语言,语法几乎和java一样。AspectJ有两种实现方式,一种是直接命用来Aspect语言编写,一种是使用java语言编写,然后使用注解的生成需要代码。

AspectJ的应用主要有:统计埋点,写日志,登录状态的判断处理,统计方法耗时等。

官方文档:

1、AspectJ语法的介绍

https://www.eclipse.org/aspectj/doc/released/progguide/index.html

2、AspectJDevelopmentEnvirenmentGuide:编译和部署工具,AspectJTools介绍

https://www.eclipse.org/aspectj/doc/released/devguide/index.html

3、AspectJNotebook:aspect5的新的api,注解方式介绍

https://www.eclipse.org/aspectj/doc/released/adk15notebook/index.html

4、aspectj的maven仓库

https://mvnrepository.com/artifact/aspectj

二、Android方案

AspectJ官方并不支持AndroidStudio开发,但官方提供了AspectTools,它包含了AspectJ编译器ajc,提供了aspectj语言的编译和织入功能,可以把aspectJ文件织入目标java代码,然后生成class文件。GitHub有开源方案利用AspectJTools和Gradle的api,编译并织入注解式的AspectJ代码。

比较完善的方案:支持kotlin,3个月前更新

https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx

使用方法:

1、在项目根目录的build.gradle里依赖AspectJX,插件包含了aspecttool相关功能,根据注解文件编译和织入。

dependencies {

classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'

}

2、在app项目的build.gradle里应用插件,kotlin的注解插件

apply plugin: 'android-aspectjx'

apply plugin: 'kotlin-kapt'

3、在需要使用AspectJ注解的module,这个是注解的支持包
compile 'org.aspectj:aspectjrt:1.8.+'
4、支持include和exclude加快编译速度

aspectjx {

//排除所有package路径中包含`android.support`的class文件及库(jar文件)

exclude 'android.support'

}

5、引入后报错的解决方案,以下两点尝试后一般都能解决
检查注解语法是否正确
降低版本至2.0.0,去掉apply plugin: 'kotlin-kapt'的支持

6、代码路径
app/build/intermediates/ajx目录中包含了include和exclude的代码
app/build/intermediates/transforms/ajx包含了织入后的代码

相关文章

网友评论

    本文标题:AspectJ在Android中的使用

    本文链接:https://www.haomeiwen.com/subject/csjrjqtx.html