diff --git a/PluginDemo/app/build.gradle b/PluginDemo/app/build.gradle
index 2d9915b..5c90aba 100644
--- a/PluginDemo/app/build.gradle
+++ b/PluginDemo/app/build.gradle
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 23
+ compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.didi.virtualapk.demo"
minSdkVersion 15
- targetSdkVersion 15
+ targetSdkVersion 25
versionName "1.0.0"
versionCode 1
}
@@ -45,12 +45,16 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+
+ lintOptions {
+ abortOnError false
+ }
}
dependencies {
// the following aars are also compiled in host project, so they will be filterd when build plugin apk.
// but, wo can still visit their Class and Resources.
- compile 'com.android.support:appcompat-v7:23.4.0'
+ compile 'com.android.support:appcompat-v7:25.4.0'
compile 'com.didi.virtualapk:core:0.9.6'
}
diff --git a/PluginDemo/app/src/main/AndroidManifest.xml b/PluginDemo/app/src/main/AndroidManifest.xml
index d305651..57538d8 100644
--- a/PluginDemo/app/src/main/AndroidManifest.xml
+++ b/PluginDemo/app/src/main/AndroidManifest.xml
@@ -4,9 +4,9 @@
android:versionCode="1"
android:versionName="1.0" >
-
+
+
+
{
this.project = project
AppPlugin appPlugin = project.plugins.findPlugin(AppPlugin)
-
Reflect reflect = Reflect.on(appPlugin.variantManager)
-
VariantFactory variantFactory = Proxy.newProxyInstance(this.class.classLoader, [VariantFactory.class] as Class[],
new InvocationHandler() {
Object delegate = reflect.get('variantFactory')
@@ -69,20 +77,26 @@ public abstract class BasePlugin implements Plugin {
project.extensions.create('virtualApk', VAExtention)
- taskFactory = new TaskContainerAdaptor(project.tasks)
+ taskFactory = new TaskFactoryImpl(project.tasks)
project.afterEvaluate {
if (!checkVariantFactoryInvoked) {
throw new RuntimeException('Evaluating VirtualApk\'s configurations has failed!')
}
- android.applicationVariants.each { ApplicationVariantImpl variant ->
+ android.applicationVariants.all { variant ->
+// if('debug' == variant.buildType.name) {
+// com.android.build.gradle.internal.variant.ApplicationVariantData variantData = variant.variantData
+//// def scope = variantData.scope
+// }
if ('release' == variant.buildType.name) {
- String variantAssembleTaskName = variant.variantData.scope.getTaskName('assemble', 'Plugin')
+ com.android.build.gradle.internal.variant.ApplicationVariantData variantData = variant.variantData
+ String variantAssembleTaskName = variant.getTaskName('assemble', 'Plugin')
def final variantPluginTaskName = createPluginTaskName(variantAssembleTaskName)
final def configAction = new AssemblePlugin.ConfigAction(project, variant)
- taskFactory.create(variantPluginTaskName, AssemblePlugin, configAction)
+// taskFactory.create(variantPluginTaskName, AssemblePlugin, configAction)
+ taskFactory.register(variantPluginTaskName, AssemblePlugin, configAction)
taskFactory.named("assemblePlugin", new Action() {
@Override
@@ -90,6 +104,7 @@ public abstract class BasePlugin implements Plugin {
task.dependsOn(variantPluginTaskName)
}
})
+
}
}
}
@@ -109,18 +124,19 @@ public abstract class BasePlugin implements Plugin {
def targetTasks = startParameter.taskNames
def pluginTasks = ['assemblePlugin'] as List
-
- appPlugin.variantManager.buildTypes.each {
+ appPlugin.variantInputModel.buildTypes.each{
+// appPlugin.variantManager.buildTypes.each {
def buildType = it.value.buildType
if ('release' != buildType.name) {
return
}
- if (appPlugin.variantManager.productFlavors.isEmpty()) {
+ if (appPlugin.variantInputModel.productFlavors.isEmpty()) {
return
}
- appPlugin.variantManager.productFlavors.each {
- String variantName = VariantConfiguration.computeFullName(it.key, buildType, VariantType.DEFAULT, null)
+ appPlugin.variantInputModel.productFlavors.each {
+// String variantName = VariantConfiguration.computeFullName(it.key, buildType, VariantType.DEFAULT, null)
+ String variantName = "myg"+buildType.name +"-"+it.key
def variantPluginTaskName = createPluginTaskName("assemble${variantName.capitalize()}Plugin".toString())
pluginTasks.add(variantPluginTaskName)
}
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy
index e67c53c..0f34261 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy
@@ -2,10 +2,10 @@ package com.didi.virtualapk
import com.android.build.gradle.api.ApplicationVariant
import com.android.build.gradle.internal.api.ApplicationVariantImpl
-import com.android.build.gradle.internal.ide.ArtifactDependencyGraph
+//import com.android.build.gradle.internal.ide.ArtifactDependencyGraph
import com.android.build.gradle.internal.pipeline.TransformTask
import com.android.build.gradle.internal.publishing.AndroidArtifacts
-import com.android.build.gradle.internal.transforms.ProGuardTransform
+//import com.android.build.gradle.internal.transforms.ProGuardTransform
import com.android.build.gradle.tasks.ProcessAndroidResources
import com.didi.virtualapk.utils.FileUtil
import com.didi.virtualapk.utils.Log
@@ -85,24 +85,24 @@ public class VAHostPlugin implements Plugin {
FileUtil.saveFile(vaHostDir, "versions", {
List deps = new ArrayList()
- Log.i TAG, "Used compileClasspath: ${applicationVariant.name}"
- Set compileArtifacts = ArtifactDependencyGraph.getAllArtifacts(
- applicationVariant.variantData.scope, AndroidArtifacts.ConsumedConfigType.COMPILE_CLASSPATH, null)
-
- compileArtifacts.each { ArtifactDependencyGraph.HashableResolvedArtifactResult artifact ->
- ComponentIdentifier id = artifact.id.componentIdentifier
- if (id instanceof ProjectComponentIdentifier) {
- deps.add("${id.projectPath.replace(':', '')}:${ArtifactDependencyGraph.getVariant(artifact)}:unspecified ${artifact.file.length()}")
-
- } else if (id instanceof ModuleComponentIdentifier) {
- deps.add("${id.group}:${id.module}:${id.version} ${artifact.file.length()}")
-
- } else {
- deps.add("${artifact.id.displayName.replace(':', '')}:unspecified:unspecified ${artifact.file.length()}")
- }
- }
-
- Collections.sort(deps)
+// Log.i TAG, "Used compileClasspath: ${applicationVariant.name}"
+// Set compileArtifacts = ArtifactDependencyGraph.getAllArtifacts(
+// applicationVariant.variantData.scope, AndroidArtifacts.ConsumedConfigType.COMPILE_CLASSPATH, null)
+//
+// compileArtifacts.each { ArtifactDependencyGraph.HashableResolvedArtifactResult artifact ->
+// ComponentIdentifier id = artifact.id.componentIdentifier
+// if (id instanceof ProjectComponentIdentifier) {
+// deps.add("${id.projectPath.replace(':', '')}:${ArtifactDependencyGraph.getVariant(artifact)}:unspecified ${artifact.file.length()}")
+//
+// } else if (id instanceof ModuleComponentIdentifier) {
+// deps.add("${id.group}:${id.module}:${id.version} ${artifact.file.length()}")
+//
+// } else {
+// deps.add("${artifact.id.displayName.replace(':', '')}:unspecified:unspecified ${artifact.file.length()}")
+// }
+// }
+
+// Collections.sort(deps)
return deps
})
}
@@ -130,19 +130,20 @@ public class VAHostPlugin implements Plugin {
*/
def backupProguardMapping(ApplicationVariant applicationVariant) {
- if (applicationVariant.buildType.minifyEnabled) {
- TransformTask proguardTask = project.tasks["transformClassesAndResourcesWithProguardFor${applicationVariant.name.capitalize()}"]
-
- ProGuardTransform proguardTransform = proguardTask.transform
- File mappingFile = proguardTransform.mappingFile
-
- proguardTask.doLast {
- project.copy {
- from mappingFile
- into vaHostDir
- }
- }
- }
+ // gradle升级后这个task找不到
+// if (applicationVariant.buildType.minifyEnabled) {
+// TransformTask proguardTask = project.tasks["transformClassesAndResourcesWithProguardFor${applicationVariant.name.capitalize()}"]
+//
+// ProGuardTransform proguardTransform = proguardTask.transform
+// File mappingFile = proguardTransform.mappingFile
+//
+// proguardTask.doLast {
+// project.copy {
+// from mappingFile
+// into vaHostDir
+// }
+// }
+// }
}
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
index 7075013..814ec6d 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
@@ -230,20 +230,20 @@ class VAPlugin extends BasePlugin {
@Override
void registerTaskHookers() {
- android.applicationVariants.all { ApplicationVariantImpl appVariant ->
- if (!appVariant.buildType.name.equalsIgnoreCase("release")) {
- return
- }
-
- registerTaskHooker(instantiator.newInstance(PrepareDependenciesHooker, project, appVariant))
- registerTaskHooker(instantiator.newInstance(MergeAssetsHooker, project, appVariant))
- registerTaskHooker(instantiator.newInstance(MergeManifestsHooker, project, appVariant))
- registerTaskHooker(instantiator.newInstance(MergeJniLibsHooker, project, appVariant))
-// registerTaskHooker(instantiator.newInstance(ShrinkResourcesHooker, project, appVariant))
- registerTaskHooker(instantiator.newInstance(ProcessResourcesHooker, project, appVariant))
- registerTaskHooker(instantiator.newInstance(ProguardHooker, project, appVariant))
- registerTaskHooker(instantiator.newInstance(DxTaskHooker, project, appVariant))
- }
+// android.applicationVariants.all { ApplicationVariantImpl appVariant ->
+// if (!appVariant.buildType.name.equalsIgnoreCase("release")) {
+// return
+// }
+//
+// registerTaskHooker(instantiator.newInstance(PrepareDependenciesHooker, project, appVariant))
+// registerTaskHooker(instantiator.newInstance(MergeAssetsHooker, project, appVariant))
+//// registerTaskHooker(instantiator.newInstance(MergeManifestsHooker, project, appVariant))
+// registerTaskHooker(instantiator.newInstance(MergeJniLibsHooker, project, appVariant))
+//// registerTaskHooker(instantiator.newInstance(ShrinkResourcesHooker, project, appVariant))
+// registerTaskHooker(instantiator.newInstance(ProcessResourcesHooker, project, appVariant))
+// registerTaskHooker(instantiator.newInstance(ProguardHooker, project, appVariant))
+// registerTaskHooker(instantiator.newInstance(DxTaskHooker, project, appVariant))
+// }
}
}
}
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/GradleTaskHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/GradleTaskHooker.groovy
index 756f79e..3af8279 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/GradleTaskHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/GradleTaskHooker.groovy
@@ -1,7 +1,8 @@
package com.didi.virtualapk.hooker
+import com.android.build.api.variant.impl.ApplicationVariantImpl
import com.android.build.gradle.api.ApkVariant
-import com.android.build.gradle.internal.api.ApplicationVariantImpl
+//import com.android.build.gradle.internal.api.ApplicationVariantImpl
import com.android.build.gradle.internal.scope.VariantScope
import com.android.build.gradle.internal.variant.BaseVariantData
import com.didi.virtualapk.VAExtention
@@ -45,11 +46,13 @@ public abstract class GradleTaskHooker {
}
public BaseVariantData getVariantData() {
- return ((ApplicationVariantImpl) this.apkVariant).variantData
+ return ((ApplicationVariantImpl) this.apkVariant)
+ .variantData
}
public VariantScope getScope() {
- return variantData.scope
+// return variantData.scope
+ return ((ApplicationVariantImpl)this.apkVariant).variantScope
}
public VAExtention getVirtualApk() {
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeAssetsHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeAssetsHooker.groovy
index 8b4ef5f..c49dd54 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeAssetsHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeAssetsHooker.groovy
@@ -2,7 +2,8 @@ package com.didi.virtualapk.hooker
import com.android.build.gradle.api.ApkVariant
import com.android.build.gradle.tasks.MergeSourceSetFolders
-import com.android.ide.common.res2.AssetSet
+//import com.android.ide.common.res2.AssetSet
+import com.android.ide.common.resources.AssetSet
import com.didi.virtualapk.collector.dependence.AarDependenceInfo
import com.didi.virtualapk.utils.Log
import com.didi.virtualapk.utils.Reflect
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeManifestsHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeManifestsHooker.groovy
index bcf30e5..d58fc55 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeManifestsHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/MergeManifestsHooker.groovy
@@ -1,159 +1,160 @@
-package com.didi.virtualapk.hooker
-
-import com.android.build.gradle.api.ApkVariant
-import com.android.build.gradle.internal.scope.TaskOutputHolder
-import com.android.build.gradle.tasks.MergeManifests
-import com.didi.virtualapk.collector.dependence.DependenceInfo
-import com.didi.virtualapk.utils.Log
-import com.didi.virtualapk.utils.Reflect
-import groovy.xml.QName
-import groovy.xml.XmlUtil
-import org.gradle.api.Project
-import org.gradle.api.artifacts.ArtifactCollection
-import org.gradle.api.artifacts.result.ResolvedArtifactResult
-import org.gradle.api.file.FileCollection
-import org.gradle.api.internal.file.AbstractFileCollection
-import org.gradle.api.tasks.TaskDependency
-
-import java.util.function.Consumer
-import java.util.function.Predicate
-
-/**
- * Filter the stripped ManifestDependency in the ManifestDependency list of MergeManifests task
- *
- * @author zhengtao
- */
-class MergeManifestsHooker extends GradleTaskHooker {
-
- public static final String ANDROID_NAMESPACE = 'http://schemas.android.com/apk/res/android'
-
- public MergeManifestsHooker(Project project, ApkVariant apkVariant) {
- super(project, apkVariant)
- }
-
- @Override
- String getTaskName() {
- return scope.getTaskName('process', 'Manifest')
- }
-
- @Override
- void beforeTaskExecute(MergeManifests task) {
-
- def stripAarNames = vaContext.stripDependencies.
- findAll {
- it.dependenceType == DependenceInfo.DependenceType.AAR
- }.
- collect { DependenceInfo dep ->
- "${dep.group}:${dep.artifact}:${dep.version}"
- } as Set
-
- Reflect reflect = Reflect.on(task)
- ArtifactCollection manifests = new FixedArtifactCollection(this, reflect.get('manifests'), stripAarNames)
- reflect.set('manifests', manifests)
- }
-
- /**
- * Filter specific attributes from element after MergeManifests task executed
- */
- @Override
- void afterTaskExecute(MergeManifests task) {
- variantData.outputScope.getOutputs(TaskOutputHolder.TaskOutputType.MERGED_MANIFESTS).each {
- rewrite(it.outputFile)
- }
- }
-
- void rewrite(File xml) {
- if (xml?.exists()) {
- final Node manifest = new XmlParser().parse(xml)
-
-
- manifest.application.each { application ->
- [ 'icon', 'label', 'allowBackup', 'supportsRtl' ].each {
- application.attributes().remove(new QName(MergeManifestsHooker.ANDROID_NAMESPACE, it))
- }
- }
-
- xml.withPrintWriter('utf-8', { pw ->
- XmlUtil.serialize(manifest, pw)
- })
- }
- }
-
- private static class FixedArtifactCollection implements ArtifactCollection {
-
- private MergeManifestsHooker hooker
- private ArtifactCollection origin
- def stripAarNames
-
- FixedArtifactCollection(MergeManifestsHooker hooker, ArtifactCollection origin, stripAarNames) {
- this.hooker = hooker
- this.origin = origin
- this.stripAarNames = stripAarNames
- }
-
- @Override
- FileCollection getArtifactFiles() {
- Set set = getArtifacts().collect { ResolvedArtifactResult result ->
- result.file
- } as Set
- FileCollection fileCollection = origin.getArtifactFiles()
-
- return new AbstractFileCollection() {
- @Override
- String getDisplayName() {
- return fileCollection.getDisplayName()
- }
-
- @Override
- TaskDependency getBuildDependencies() {
- return fileCollection.getBuildDependencies()
- }
-
- @Override
- Set getFiles() {
- Set files = new LinkedHashSet(fileCollection.getFiles())
- files.retainAll(set)
- return files
- }
- }
- }
-
- @Override
- Set getArtifacts() {
- Set set = origin.getArtifacts()
- set.removeIf(new Predicate() {
- @Override
- boolean test(ResolvedArtifactResult result) {
- boolean ret = stripAarNames.contains("${result.id.componentIdentifier.displayName}")
- if (ret) {
- Log.i 'MergeManifestsHooker', "Stripped manifest of artifact: ${result} -> ${result.file}"
- }
- return ret
- }
- })
-
- hooker.mark()
- return set
- }
-
- @Override
- Collection getFailures() {
- return origin.getFailures()
- }
-
- @Override
- Iterator iterator() {
- return getArtifacts().iterator()
- }
-
- @Override
- void forEach(Consumer super ResolvedArtifactResult> action) {
- getArtifacts().forEach(action)
- }
-
- @Override
- Spliterator spliterator() {
- return getArtifacts().spliterator()
- }
- }
-}
\ No newline at end of file
+//package com.didi.virtualapk.hooker
+//
+//import com.android.build.gradle.api.ApkVariant
+////import com.android.build.gradle.internal.scope.TaskOutputHolder
+////import com.android.build.gradle.tasks.MergeManifests
+//import com.didi.virtualapk.collector.dependence.DependenceInfo
+//import com.didi.virtualapk.utils.Log
+//import com.didi.virtualapk.utils.Reflect
+//import groovy.xml.QName
+//import groovy.xml.XmlUtil
+//import org.gradle.api.Project
+//import org.gradle.api.artifacts.ArtifactCollection
+//import org.gradle.api.artifacts.result.ResolvedArtifactResult
+//import org.gradle.api.file.FileCollection
+//import org.gradle.api.internal.file.AbstractFileCollection
+//import org.gradle.api.tasks.TaskDependency
+//
+//import java.util.function.Consumer
+//import java.util.function.Predicate
+//
+///**
+// * Filter the stripped ManifestDependency in the ManifestDependency list of MergeManifests task
+// *
+// * @author zhengtao
+// */
+//class MergeManifestsHooker extends GradleTaskHooker {
+//
+// public static final String ANDROID_NAMESPACE = 'http://schemas.android.com/apk/res/android'
+//
+// public MergeManifestsHooker(Project project, ApkVariant apkVariant) {
+// super(project, apkVariant)
+// }
+//
+// @Override
+// String getTaskName() {
+// return scope.getTaskName('process', 'Manifest')
+// }
+//
+// @Override
+// void beforeTaskExecute(MergeManifests task) {
+//
+// def stripAarNames = vaContext.stripDependencies.
+// findAll {
+// it.dependenceType == DependenceInfo.DependenceType.AAR
+// }.
+// collect { DependenceInfo dep ->
+// "${dep.group}:${dep.artifact}:${dep.version}"
+// } as Set
+//
+// Reflect reflect = Reflect.on(task)
+// ArtifactCollection manifests = new FixedArtifactCollection(this, reflect.get('manifests'), stripAarNames)
+// reflect.set('manifests', manifests)
+// }
+//
+// /**
+// * Filter specific attributes from element after MergeManifests task executed
+// */
+// @Override
+// void afterTaskExecute(MergeManifests task) {
+// variantData.outputScope.getOutputs(TaskOutputHolder.TaskOutputType.MERGED_MANIFESTS).each {
+// rewrite(it.outputFile)
+// }
+// }
+//
+// void rewrite(File xml) {
+// if (xml?.exists()) {
+// final Node manifest = new XmlParser().parse(xml)
+//
+//
+// manifest.application.each { application ->
+// [ 'icon', 'label', 'allowBackup', 'supportsRtl' ].each {
+// application.attributes().remove(new QName(MergeManifestsHooker.ANDROID_NAMESPACE, it))
+// }
+// }
+//
+// xml.withPrintWriter('utf-8', { pw ->
+// XmlUtil.serialize(manifest, pw)
+// })
+// }
+// }
+//
+// private static class FixedArtifactCollection implements ArtifactCollection {
+//
+// private MergeManifestsHooker hooker
+// private ArtifactCollection origin
+// def stripAarNames
+//
+// FixedArtifactCollection(MergeManifestsHooker hooker, ArtifactCollection origin, stripAarNames) {
+// this.hooker = hooker
+// this.origin = origin
+// this.stripAarNames = stripAarNames
+// }
+//
+// @Override
+// FileCollection getArtifactFiles() {
+// Set set = getArtifacts().collect { ResolvedArtifactResult result ->
+// result.file
+// } as Set
+// FileCollection fileCollection = origin.getArtifactFiles()
+//
+// return new AbstractFileCollection() {
+// @Override
+// String getDisplayName() {
+// return fileCollection.getDisplayName()
+// }
+//
+// // TODO gradle 升级之后,这里的方法变为final了,所以不能override
+//// @Override
+//// TaskDependency getBuildDependencies() {
+//// return fileCollection.getBuildDependencies()
+//// }
+//
+// @Override
+// Set getFiles() {
+// Set files = new LinkedHashSet(fileCollection.getFiles())
+// files.retainAll(set)
+// return files
+// }
+// }
+// }
+//
+// @Override
+// Set getArtifacts() {
+// Set set = origin.getArtifacts()
+// set.removeIf(new Predicate() {
+// @Override
+// boolean test(ResolvedArtifactResult result) {
+// boolean ret = stripAarNames.contains("${result.id.componentIdentifier.displayName}")
+// if (ret) {
+// Log.i 'MergeManifestsHooker', "Stripped manifest of artifact: ${result} -> ${result.file}"
+// }
+// return ret
+// }
+// })
+//
+// hooker.mark()
+// return set
+// }
+//
+// @Override
+// Collection getFailures() {
+// return origin.getFailures()
+// }
+//
+// @Override
+// Iterator iterator() {
+// return getArtifacts().iterator()
+// }
+//
+// @Override
+// void forEach(Consumer super ResolvedArtifactResult> action) {
+// getArtifacts().forEach(action)
+// }
+//
+// @Override
+// Spliterator spliterator() {
+// return getArtifacts().spliterator()
+// }
+// }
+//}
\ No newline at end of file
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy
index 557ca39..53ee2f7 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy
@@ -1,7 +1,9 @@
package com.didi.virtualapk.hooker
import com.android.build.gradle.api.ApkVariant
-import com.android.build.gradle.internal.ide.ArtifactDependencyGraph
+import com.android.build.gradle.internal.ide.dependencies.ArtifactDependencyGraph
+
+//import com.android.build.gradle.internal.ide.ArtifactDependencyGraph
import com.android.build.gradle.internal.tasks.AppPreBuildTask
import com.android.builder.model.Dependencies
import com.android.builder.model.SyncIssue
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProcessResourcesHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProcessResourcesHooker.groovy
index cec55ca..cd8e771 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProcessResourcesHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProcessResourcesHooker.groovy
@@ -3,7 +3,7 @@ package com.didi.virtualapk.hooker
import com.android.build.gradle.AndroidConfig
import com.android.build.gradle.AppExtension
import com.android.build.gradle.api.ApkVariant
-import com.android.build.gradle.internal.scope.TaskOutputHolder
+//import com.android.build.gradle.internal.scope.TaskOutputHolder
import com.android.build.gradle.tasks.ProcessAndroidResources
import com.android.sdklib.BuildToolInfo
import com.didi.virtualapk.aapt.Aapt
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProguardHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProguardHooker.groovy
index d6df4f3..546a699 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProguardHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ProguardHooker.groovy
@@ -2,7 +2,7 @@ package com.didi.virtualapk.hooker
import com.android.build.gradle.api.ApkVariant
import com.android.build.gradle.internal.pipeline.TransformTask
-import com.android.build.gradle.internal.transforms.ProGuardTransform
+//import com.android.build.gradle.internal.transforms.ProGuardTransform
import com.didi.virtualapk.collector.dependence.AarDependenceInfo
import org.gradle.api.InvalidUserDataException
import org.gradle.api.Project
@@ -39,7 +39,7 @@ class ProguardHooker extends GradleTaskHooker {
@Override
void beforeTaskExecute(TransformTask task) {
- def proguardTransform = task.transform as ProGuardTransform
+// def proguardTransform = task.transform as ProGuardTransform
File applyMappingFile;
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ShrinkResourcesHooker.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ShrinkResourcesHooker.groovy
index 29f67b3..64c3332 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ShrinkResourcesHooker.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/ShrinkResourcesHooker.groovy
@@ -4,7 +4,7 @@ import com.android.build.api.transform.TransformException
import com.android.build.api.transform.TransformInvocation
import com.android.build.gradle.api.ApkVariant
import com.android.build.gradle.internal.pipeline.TransformTask
-import com.android.build.gradle.internal.transforms.ShrinkResourcesTransform
+//import com.android.build.gradle.internal.transforms.ShrinkResourcesTransform
import com.didi.virtualapk.transform.TransformWrapper
import com.didi.virtualapk.utils.Log
import com.didi.virtualapk.utils.Reflect
@@ -23,7 +23,7 @@ class ShrinkResourcesHooker extends GradleTaskHooker {
@Override
void beforeTaskExecute(TransformTask task) {
- def shrinkResourcesTransform = task.transform as ShrinkResourcesTransform
+// def shrinkResourcesTransform = task.transform as ShrinkResourcesTransform
Reflect.on(task).set('transform', new TransformWrapper(shrinkResourcesTransform) {
@Override
void transform(TransformInvocation invocation) throws TransformException, InterruptedException, IOException {
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy
index d1b97e5..b0cd3a7 100644
--- a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy
@@ -4,13 +4,13 @@ import com.android.build.gradle.api.ApkVariant
import com.android.build.gradle.internal.api.ApplicationVariantImpl
import com.didi.virtualapk.VAExtention
import com.didi.virtualapk.utils.Log
-import com.sun.istack.internal.NotNull
import org.gradle.api.Action
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
+import org.jetbrains.annotations.NotNull
/**
* Gradle task for assemble plugin apk
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/TaskContainerAdaptor.java b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/TaskContainerAdaptor.java
new file mode 100644
index 0000000..cdacc8e
--- /dev/null
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/TaskContainerAdaptor.java
@@ -0,0 +1,60 @@
+package com.didi.virtualapk.utils;
+
+import com.android.annotations.Nullable;
+
+import org.gradle.api.Action;
+import org.gradle.api.Task;
+import org.gradle.api.internal.project.taskfactory.TaskFactory;
+import org.gradle.api.tasks.TaskContainer;
+
+///**
+// * Created by muyonggang on 2023/7/13
+// *
+// * @author muyonggang@bytedance.com
+// */
+//
+//public class TaskContainerAdaptor implements TaskFactory {
+//
+// private final TaskContainer tasks;
+//
+// public TaskContainerAdaptor(TaskContainer tasks) {
+// this.tasks = tasks;
+// }
+//
+// @Override
+// public boolean containsKey(String name) {
+// return tasks.findByName(name) != null;
+// }
+//
+// @Override
+// public void create(String name) {
+// tasks.create(name);
+// }
+//
+// @Override
+// public void create(String name, Action super Task> configAction) {
+// tasks.create(name, configAction);
+// }
+//
+// @Override
+// public void create(String name, Class type) {
+// tasks.create(name, type);
+// }
+//
+// @Override
+// public void create(String name, Class type,
+// Action super S> configAction) {
+// tasks.create(name, type, configAction);
+// }
+//
+// @Override
+// public void named(String name, Action super Task> configAction) {
+// configAction.execute(tasks.findByName(name));
+// }
+//
+// @Nullable
+// @Override
+// public Task named(String name) {
+// return tasks.getByName(name);
+// }
+//}
diff --git a/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/VariantConfiguration.java b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/VariantConfiguration.java
new file mode 100644
index 0000000..64108f5
--- /dev/null
+++ b/virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/VariantConfiguration.java
@@ -0,0 +1,43 @@
+package com.didi.virtualapk.utils;
+
+import com.android.annotations.NonNull;
+import com.android.annotations.Nullable;
+import com.android.builder.core.VariantType;
+import com.android.builder.model.BuildType;
+import com.android.utils.StringHelper;
+
+/**
+ * Created by muyonggang on 2023/7/12
+ */
+public class VariantConfiguration {
+
+
+// // copy from agp 3.0.0
+// @NonNull
+// public static String computeFullName(
+// @NonNull String flavorName,
+// @NonNull B buildType,
+// @NonNull VariantType type,
+// @Nullable VariantType testedType) {
+// StringBuilder sb = new StringBuilder();
+//
+// if (!flavorName.isEmpty()) {
+// sb.append(flavorName);
+// sb.append(StringHelper.capitalize(buildType.getName()));
+// } else {
+// sb.append(buildType.getName());
+// }
+//
+// if (type == VariantType.FEATURE) {
+// sb.append("Feature");
+// }
+//
+// if (type.isForTesting()) {
+// if (testedType == VariantType.FEATURE) {
+// sb.append("Feature");
+// }
+// sb.append(type.getSuffix());
+// }
+// return sb.toString();
+// }
+}
diff --git a/virtualapk-gradle-plugin/upload.gradle b/virtualapk-gradle-plugin/upload.gradle
index 0611452..9e8829f 100644
--- a/virtualapk-gradle-plugin/upload.gradle
+++ b/virtualapk-gradle-plugin/upload.gradle
@@ -1,49 +1,9 @@
-apply plugin: 'com.github.dcendents.android-maven'
-apply plugin: 'com.jfrog.bintray'
-
-
-def siteUrl = 'https://github.com/didi/VirtualAPK' // 项目的主页
-def gitUrl = 'https://github.com/didi/VirtualAPK' // Git仓库的url
+apply plugin: 'maven-publish'
group = GROUP_ID
archivesBaseName = 'gradle'
version = VERSION
-install {
- repositories.mavenInstaller {
- // This generates POM.xml with proper parameters
- pom {
- artifactId = ARTIFACT_ID
-
- project {
- packaging 'aar'
- // Add your description here
- name 'A powerful but lightweight plugin framework for Android' //项目描述
- url siteUrl
- // Set your license
- licenses {
- license {
- name 'Apache License 2.0'
- url 'http://www.apache.org/licenses/LICENSE-2.0'
- }
- }
- developers {
- developer {
- id 'zhengtao' //填写的一些基本信息
- name 'DiDi'
- email 'zhengtao620@gmail.com'
- }
- }
- scm {
- connection gitUrl
- developerConnection gitUrl
- url siteUrl
- }
- }
- }
- }
-}
-
task sourcesJar(type: Jar) {
from sourceSets.main.allJava
classifier = 'sources'
@@ -56,20 +16,21 @@ artifacts {
//archives javadocJar
archives sourcesJar
}
+// https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html#sec:publishing_artifacts_tutorial
+publishing {
+ publications {
+ maven(MavenPublication) {
+ groupId = group
+ artifactId = ARTIFACT_ID
+ version(version)
-Properties properties = new Properties()
-properties.load(project.rootProject.file('local.properties').newDataInputStream())
-bintray {
- user = properties.getProperty("bintray.user")
- key = properties.getProperty("bintray.apikey")
- configurations = ['archives']
- pkg {
- repo = "maven"
- name = "${GROUP_ID}:${ARTIFACT_ID}" //发布到JCenter上的项目名字
- websiteUrl = siteUrl
- vcsUrl = gitUrl
- licenses = ["Apache-2.0"]
- publish = true
+ from components.java
+ }
+ }
+ repositories {
+ maven {
+ name = 'myRepo'
+ url = layout.buildDirectory.dir("repo")
+ }
}
-
}
\ No newline at end of file