@@ -2,11 +2,9 @@ package com.flyjingfish.android_aop_plugin.plugin
22
33import com.android.build.api.variant.AndroidComponentsExtension
44import com.android.build.api.variant.Variant
5- import com.android.build.gradle.AppExtension
65import com.android.build.gradle.AppPlugin
76import com.android.build.gradle.BaseExtension
87import com.android.build.gradle.DynamicFeaturePlugin
9- import com.android.build.gradle.LibraryExtension
108import com.android.build.gradle.LibraryPlugin
119import com.flyjingfish.android_aop_plugin.config.AndroidAopConfig
1210import com.flyjingfish.android_aop_plugin.scanner_visitor.SuspendReturnScanner
@@ -23,15 +21,14 @@ import com.flyjingfish.android_aop_plugin.utils.WovenInfoUtils
2321import com.flyjingfish.android_aop_plugin.utils.adapterOSPath
2422import com.flyjingfish.android_aop_plugin.utils.getBuildDirectory
2523import com.flyjingfish.android_aop_plugin.utils.getRelativePath
26- import org.codehaus.groovy.runtime.DefaultGroovyMethods
2724import org.gradle.api.Project
2825import org.gradle.api.execution.TaskExecutionGraph
2926import org.gradle.api.execution.TaskExecutionGraphListener
3027import org.gradle.api.plugins.JavaPluginExtension
3128import org.gradle.api.tasks.PathSensitivity
3229import org.gradle.api.tasks.compile.AbstractCompile
3330import org.gradle.api.tasks.compile.JavaCompile
34- import org.gradle.configurationcache .extensions.capitalized
31+ import org.gradle.internal .extensions.stdlib .capitalized
3532import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTool
3633import java.io.File
3734
@@ -192,25 +189,15 @@ class CompilePlugin(private val fromRootSet:Boolean): BasePlugin() {
192189 }
193190
194191
195- val android = androidObject as BaseExtension
196- val variants = if (isApp or isDynamicLibrary) {
197- (android as AppExtension ).applicationVariants
198- } else {
199- (android as LibraryExtension ).libraryVariants
200- }
201- variants.all { variant ->
202- val javaCompile: AbstractCompile =
203- if (DefaultGroovyMethods .hasProperty(variant, " javaCompileProvider" ) != null ) {
204- // gradle 4.10.1 +
205- variant.javaCompileProvider.get()
206- } else if (DefaultGroovyMethods .hasProperty(variant, " javaCompiler" ) != null ) {
207- variant.javaCompiler as AbstractCompile
208- } else {
209- variant.javaCompile as AbstractCompile
210- }
211- val variantName = variant.name
212- val buildTypeName = variant.buildType.name
213- if (! isIncremental() && javaCompile is JavaCompile && isDebugMode(buildTypeName,variantName)){
192+ project.tasks.withType(JavaCompile ::class .java).configureEach { javaCompile ->
193+ val taskName = javaCompile.name
194+
195+ val variantName = taskName
196+ .removePrefix(" compile" )
197+ .removeSuffix(" JavaWithJavac" )
198+ .replaceFirstChar { it.lowercase() }
199+ val buildTypeName = null
200+ if (! isIncremental() && isDebugMode(buildTypeName,variantName)){
214201 javaCompile.options.isIncremental = false
215202 }
216203 if (isApp && isIncremental()){
@@ -232,54 +219,27 @@ class CompilePlugin(private val fromRootSet:Boolean): BasePlugin() {
232219 if (hasBuildConfig()){
233220 val androidComponents = project.extensions.getByType(AndroidComponentsExtension ::class .java)
234221 val variantList: ArrayList <Variant > = ArrayList ()
222+ val android = project.extensions.getByName(" android" )
235223 androidComponents.onVariants { variant ->
236224 variantList.add(variant)
237225 val variantName = variant.name
238226 val path = Utils .aopDebugModeJavaDir(variantName)
239227 val debugModeDir = File (" ${project.getBuildDirectory().absolutePath}$path " )
240228 val variantNameCapitalized = variantName.capitalized()
241- var packageName = if (android.namespace == null || android.namespace == " null" ){
242- android.defaultConfig.applicationId.toString()
243- }else {
244- android.namespace.toString()
245- }
246-
247- if (packageName == " null" ){
248- for (sourceSet in android.sourceSets) {
249- if (sourceSet.name == " main" ){
250- val pkName = getPackageName(sourceSet.java.srcDirs,debugModeDir)
251- if (pkName != null ){
252- packageName = pkName
253- break
254- }
255- }
229+ var packageName = when (android) {
230+ is com.android.build.api.dsl.ApplicationExtension -> {
231+ (android.namespace ? : android.defaultConfig.applicationId)? : " "
256232 }
257- }
258-
259- if (packageName == " null" ){
260- for (sourceSet in android.sourceSets) {
261- if (sourceSet.name == " release" ){
262- val pkName = getPackageName(sourceSet.java.srcDirs,debugModeDir)
263- if (pkName != null ){
264- packageName = pkName
265- break
266- }
267- }
233+ is com.android.build.api.dsl.LibraryExtension -> {
234+ android.namespace ? : " "
268235 }
269- }
270-
271- if (packageName == " null" ){
272- for (sourceSet in android.sourceSets) {
273- if (sourceSet.name == " debug" ){
274- val pkName = getPackageName(sourceSet.java.srcDirs,debugModeDir)
275- if (pkName != null ){
276- packageName = pkName
277- break
278- }
279- }
236+ is BaseExtension -> {
237+ (android.namespace ? : android.defaultConfig.applicationId)? : " "
280238 }
239+ else -> " "
281240 }
282- if (packageName.isEmpty()){
241+
242+ if (packageName.isEmpty() || packageName == " null" ){
283243 packageName = project.name.replace(" -" ," _" )
284244 }
285245 val buildTypeName: String? = variant.buildType
@@ -343,7 +303,7 @@ class CompilePlugin(private val fromRootSet:Boolean): BasePlugin() {
343303 return null
344304 }
345305
346- private fun doAopTask (project : RuntimeProject ,isApp : Boolean , variantName : String , buildTypeName : String ,
306+ private fun doAopTask (project : RuntimeProject ,isApp : Boolean , variantName : String , buildTypeName : String? ,
347307 javaCompile : AbstractCompile , kotlinDefaultPath : File , isAndroidModule : Boolean = true, isDynamic : Boolean = false){
348308 val cacheDir = if (isAndroidModule) {
349309 kotlinCompileFilePathMap[project.buildDir.absolutePath+ " @" + " compile${variantName.capitalized()} Kotlin" ]
@@ -361,7 +321,7 @@ class CompilePlugin(private val fromRootSet:Boolean): BasePlugin() {
361321 if (AndroidAopConfig .enabled && debugMode){
362322 ClassFileUtils .debugMode = true
363323 val hint = " AndroidAOP Tip: You are using debugMode mode"
364- if (buildTypeName == " release" ){
324+ if (! buildTypeName.isNullOrEmpty() && buildTypeName.contains( " release" ) ){
365325 logger.error(hint)
366326 }else {
367327 logger.warn(hint)
0 commit comments