@@ -2,11 +2,10 @@ package com.didi.virtualapk
22
33import com.android.build.gradle.AppExtension
44import com.android.build.gradle.AppPlugin
5- import com.android.build.gradle.internal.TaskContainerAdaptor
65import com.android.build.gradle.internal.TaskFactory
6+ import com.android.build.gradle.internal.TaskManager
77import com.android.build.gradle.internal.api.ApplicationVariantImpl
88import com.android.build.gradle.internal.variant.VariantFactory
9- import com.android.builder.core.VariantConfiguration
109import com.android.builder.core.VariantType
1110import com.didi.virtualapk.tasks.AssemblePlugin
1211import com.didi.virtualapk.utils.Log
@@ -44,6 +43,14 @@ public abstract class BasePlugin implements Plugin<Project> {
4443 @Override
4544 public void apply (Project project ) {
4645 this . project = project
46+ project. ext. set(Constants . GRADLE_3_1_0 , false )
47+
48+ try {
49+ Class . forName(' com.android.builder.core.VariantConfiguration' )
50+ } catch (Throwable e) {
51+ // com.android.tools.build:gradle:3.1.0
52+ project. ext. set(Constants . GRADLE_3_1_0 , true )
53+ }
4754
4855 AppPlugin appPlugin = project. plugins. findPlugin(AppPlugin )
4956
@@ -69,7 +76,12 @@ public abstract class BasePlugin implements Plugin<Project> {
6976
7077 project. extensions. create(' virtualApk' , VAExtention )
7178
72- taskFactory = new TaskContainerAdaptor (project. tasks)
79+ if (project. extensions. extraProperties. get(Constants . GRADLE_3_1_0 )) {
80+ TaskManager taskManager = Reflect . on(appPlugin). field(' taskManager' ). get()
81+ taskFactory = taskManager. getTaskFactory()
82+ } else {
83+ taskFactory = Reflect . on(' com.android.build.gradle.internal.TaskContainerAdaptor' ). create(project. tasks). get()
84+ }
7385 project. afterEvaluate {
7486
7587 if (! checkVariantFactoryInvoked) {
@@ -84,12 +96,18 @@ public abstract class BasePlugin implements Plugin<Project> {
8496
8597 taskFactory. create(variantPluginTaskName, AssemblePlugin , configAction)
8698
87- taskFactory . named( " assemblePlugin " , new Action<Task > () {
99+ Action action = new Action<Task > () {
88100 @Override
89101 void execute (Task task ) {
90102 task. dependsOn(variantPluginTaskName)
91103 }
92- })
104+ }
105+
106+ if (project. extensions. extraProperties. get(Constants . GRADLE_3_1_0 )) {
107+ taskFactory. configure(" assemblePlugin" , action)
108+ } else {
109+ taskFactory. named(" assemblePlugin" , action)
110+ }
93111 }
94112 }
95113 }
@@ -120,7 +138,12 @@ public abstract class BasePlugin implements Plugin<Project> {
120138 }
121139
122140 appPlugin. variantManager. productFlavors. each {
123- String variantName = VariantConfiguration . computeFullName(it. key, buildType, VariantType . DEFAULT , null )
141+ String variantName
142+ if (project. extensions. extraProperties. get(Constants . GRADLE_3_1_0 )) {
143+ variantName = com.android.build.gradle.internal.core.VariantConfiguration . computeFullName(it. key, buildType, VariantType . DEFAULT , null )
144+ } else {
145+ variantName = com.android.builder.core.VariantConfiguration . computeFullName(it. key, buildType, VariantType . DEFAULT , null )
146+ }
124147 def variantPluginTaskName = createPluginTaskName(" assemble${ variantName.capitalize()} Plugin" . toString())
125148 pluginTasks. add(variantPluginTaskName)
126149 }
0 commit comments