AspectJX - Android开发平台的AOP框架

news/2025/2/12 8:01:30/

官网

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.ppmy.cn/news/1202053.html

相关文章

基于SSM的办公自动化管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

【uniapp+vue3/vue2】ksp-cropper高性能图片裁剪工具,详解

效果图: 1、ksp-cropper是hbuilder插件市场中的一款插件,兼容vue2和vue3 ksp-cropper插件安装地址,直接点击跳转 2、插件用法相对简单 (1)只要url有值就会显示插件,为空就会隐藏插件 (2&#…

③【操作表数据】MySQL添加数据、修改数据、删除数据

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL添加数据、修改数据、删除数据 &#x1f…

【内功修炼】详解函数栈帧的创建和销毁

文章目录 1. 什么是函数栈帧2. 理解函数栈帧能解决什么问题呢?3. 函数栈帧的创建和销毁解析3.1 什么是栈?3.2 认识相关寄存器和汇编指令常见寄存器常用汇编指令 3.3 详解函数栈帧的创建和销毁3.3.1 函数的调用堆栈(main函数也是被其它函数调用…

网络通信之端口、协议

端口 什么是端口号? 端口号是用于在计算机网络中标识不同应用程序或服务的数字标识。它允许网络上的不同设备和应用程序之间进行数据交换和通信。 标记正在计算机设备上运行的应用程序的,被规定为一个 16 位的二进制,范围是0~65535 端口的…

CSS特效001:鼠标放div上,实现旋转、放大、移动等效果

GPT能够很好的应用到我们的代码开发中,能够提高开发速度。你可以利用其代码,做出一定的更改,然后实现效能。 css实战中,经常会看到这样的场景,鼠标放到一个图片或者一个div块状时候,会出现旋转、放大、移动…

C#通过TCP发送List<string>

using System; using System.IO; using System.Net.Sockets; using System.Text; using System.Collections.Generic;public static void SendList<string>(Stream stream, List<string> list) {// 将List<string>对象转换为字节数组byte[] data Encoding.U…

Spire.Office for Java 8.10.2 同步更新Crk

Spire.Office for Java 是 E-iceblue 提供的企业级 Office Java API 的组合。它包括Spire.Doc for Java、Spire.XLS for Java、Spire.Presentation for Java、Spire.PDF for Java和Spire.Barcode for Java。 开发人员可以使用Spire.Office for Java在Java应用程序中执行各种办…