之前低版本gradle集成aspectj可以成功,但是最近用gradle7.3以上去集成时一直报错,提示找不到插件。尝试了很久,最终找到了解决方案,这里记录下。
由于android-aspectj 原作者不维护了,现在高版本的支持插件是
'io.github.wurensen.android-aspectjx'
下面是新插件具体的集成步骤:
在project 工程目录下的build.gradle中添加
classpath 'io.github.wurensen:gradle-android-plugin-aspectjx:3.3.2'
在app的build.gradle中添加,注意一定要放在application插件的下方,否则会报错
apply plugin: 'io.github.wurensen.android-aspectjx'
在library的build.gradle中添加(组件开发模式中,需要放在需要开启aop的模块中)
implementation 'org.aspectj:aspectjrt:1.9.7'
下面是全部代码:
project build.gradle
buildscript { ext.kotlin_version = '1.7.10' repositories { mavenCentral() //jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.3.1' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.10' classpath 'io.github.wurensen:gradle-android-plugin-aspectjx:3.3.2' } }
app build.gradle
apply plugin: 'com.android.application' apply plugin: 'io.github.wurensen.android-aspectjx' apply plugin: 'kotlin-android' android { compileSdkVersion 34 buildToolsVersion "34.0.0" defaultConfig { targetSdkVersion 34 minSdkVersion 31 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } **** } dependencies { **** }
library build.gradle
plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' } android { namespace 'com.xiaomi.xms.ai.recorder' compileSdk 34 defaultConfig { minSdk 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" } ***** } dependencies { implementation 'androidx.core:core-ktx:1.13.1' implementation 'org.aspectj:aspectjrt:1.9.7' }