当前位置: 首页 > news >正文

AspectJX - Android开发平台的AOP框架

官网

GitHub - HujiangTechnology/gradle_plugin_android_aspectjx: A Android gradle plugin that effects AspectJ on Android project and can hook methods in Kotlin, aar and jar file.

项目简介

一个基于AspectJ并在此基础上扩展出来可应用于Android开发平台的AOP框架,可作用于java源码,class文件及jar包,同时支持kotlin的应用。

如何使用

AspectJX是基于 gradle android插件1.5及以上版本设计使用的,如果你还在用1.3或者更低版本,请把版本升上去。

本使用说明是基于重构后的2.0.0版本编写的,如需要查阅旧版本的README,请切换到对应的Tag。

  • 插件引用

在项目根目录的build.gradle里依赖AspectJX

dependencies {classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.8'}

或者使用product目录下的jar包,在你的项目根目录下新建目录plugins,把product/gradle-android-plugin-aspectjx-2.0.0.jar拷贝到plugins,依赖jar包

dependencies {classpath fileTree(dir:'plugins', include:['*.jar'])}

注意:

  1. 区别于旧版本,离线新版本不再需要依赖org.aspectj:aspectjtools:1.8.+
  2. compile 'org.aspectj:aspectjrt:1.8.+' 必须添加到包含有AspectJ代码的module. 可以参考Demo
  • 在app项目的build.gradle里应用插件
apply plugin: 'android-aspectjx'
//或者这样也可以
apply plugin: 'com.hujiang.android-aspectjx'
  • AspectJX配置

AspectJX默认会处理所有的二进制代码文件和库,为了提升编译效率及规避部分第三方库出现的编译兼容性问题,AspectJX提供include,exclude命令来过滤需要处理的文件及排除某些文件(包括class文件及jar文件)。

注意:2.0.0版本之后旧版本的includeJarFilter和excludeJarFilter命令废弃,不再支持使用

2.0.0版本的 include,exclude通过package路径匹配class文件及jar文件,不再支持通过jar物理文件路径匹配的方式,比如:

支持

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

不支持

aspectjx {excludeJarFilter 'universal-image-loader'
}//或者
aspectjx {exclude 'universal-image-loader'
}

支持***匹配

aspectjx {
//忽略所有的class文件及jar文件,相当于AspectJX不生效exclude '*'
}

提供enabled 开关

enabled默认为true,即默认AspectJX生效

aspectjx {
//关闭AspectJX功能enabled false
}

使用参考文档

Android gradle7.3.3配置AspectJX(AspectJ),一步一个坑,成功开启AOP编程之路-CSDN博客

http://www.lryc.cn/news/221369.html

相关文章:

  • 【TDK 电容 】介电质 代码 对应温度及变化率
  • 随笔--解决ubuntu虚拟环境的依赖问题
  • Gin学习笔记
  • 使用 OpenTracing 和 LightStep 监控无服务器功能
  • Sleep(0)、Sleep(1)、SwitchToThread()
  • 前端食堂技术周刊第 103 期:10 月登陆 Web 平台的新功能、TS 5.3 RC、React 2023 状态、高并发的哲学原理、Web 资源加载优先级
  • Python(三)数据类型转换
  • linq to sql性能优化技巧
  • ubuntu20.04 安装cudnn
  • 手机转接器实现原理,低成本方案讲解
  • RDS for MySQL 是什么
  • Java开发注意事项和细节说明
  • springboot中使用Java代码进行MongoDB集合数据备份
  • JavaEE的渊源
  • html中使用JQ自定义锚点偏移量
  • 032、数据增广*
  • 力扣最热一百题——盛水最多的容器
  • 备份扫描工具 god_bak
  • 软考 系统架构设计师系列知识点之数字孪生体(2)
  • CSS实现文本左右对齐
  • 利用exec命令进入docker容器时的报错问题
  • Java 与C++ 语言的一些区别
  • npm ERR! network ‘proxy‘ config is set properly. See: ‘npm help config解决方法
  • An Empirical Study of Instruction-tuning Large Language Models in Chinese
  • [MICROSAR Adaptive] --- 开发环境准备
  • Yolov5 batch 推理
  • 【ARFoundation学习笔记】ARFoundation基础(下)
  • 《UML和模式应用(原书第3版)》2024新修订译本部分截图
  • JSP 学生成绩查询管理系统eclipse开发sql数据库serlvet框架bs模式java编程MVC结构
  • 技术分享 | app自动化测试(Android)-- 属性获取与断言