之前低版本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' }