之前低版本gradle集成aspectj可以成功,但是最近用gradle7.3以上去集成时一直报错,提示找不到插件。尝试了很久,最终找到了解决方案,这里记录下。
由于android-aspectj 原作者不维护了,现在高版本的支持插件是
arduino'io.github.wurensen.android-aspectjx'
下面是新插件具体的集成步骤:
- 在project 工程目录下的build.gradle中添加
arduinoclasspath 'io.github.wurensen:gradle-android-plugin-aspectjx:3.3.2'
- 在app的build.gradle中添加,注意一定要放在application插件的下方,否则会报错
arduinoapply plugin: 'io.github.wurensen.android-aspectjx'
- 在library的build.gradle中添加(组件开发模式中,需要放在需要开启aop的模块中)
arduinoimplementation 'org.aspectj:aspectjrt:1.9.7'
下面是全部代码:
project build.gradle
arduino
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
arduino
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
bash
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'
}