Project gradle
dependencies {
....
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'
}
这里如果依赖拉不下来的话改成下面这样
repositories {
google()
maven { url 'https://maven.aliyun.com/repository/public' }//jcenter
maven { url "https://jitpack.io" }
//其他的阿里镜像 可不用
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }//gradle-plugin
maven { url 'https://maven.aliyun.com/repository/central' }//central
maven { url 'https://maven.aliyun.com/repository/google' }//google
}
Module gradle
apply plugin: 'android-aspectjx'
android {
...
...
aspectjx{
//冲突配置 不加的话似乎会报 zip file is empty错误
include 'com.包名'
}
}
dependencies {
...
implementation 'org.aspectj:aspectjrt:1.9.5'
}
使用
新建一个切点接口
@Target(ElementType.METHOD) //面向方法
@Retention(RetentionPolicy.RUNTIME) //保留策略 运行时
public @interface CheckIsLogin {
//可以设置参数
}
新建一个切面类
@Aspect
public class CheckIsLoginAspectJ {
//切点CheckIsLogin
@Pointcut("execution(@com.包名.CheckIsLogin * *(..))")
public void executeCheckIsLogin(){}
//环绕通知(还有Before,After) 对应切点方法名
@Around("executeCheckIsLogin()")
public void checkIsLoginAspectJ(ProceedingJoinPoint point) throws Throwable {
boolean isLogin = MainActivity.isLogin;
if (isLogin){
//满足条件继续执行切点后续代码
point.proceed();
}else {
System.out.println("No login!!!!!!");
}
}
}
Activity中使用切点
@CheckIsLogin
@Override
public void onClick(View view) {
}
然后就 可以愉快的切面了