Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java:11 #396

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions PluginDemo/app/build.gradle
Original file line number Diff line number Diff line change
@@ -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
}
Expand Down Expand Up @@ -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'
}

Expand Down
6 changes: 3 additions & 3 deletions PluginDemo/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="19" />
<!-- <uses-sdk-->
<!-- android:minSdkVersion="15"-->
<!-- android:targetSdkVersion="19" />-->

<permission
android:name="com.didi.virtualapk.demo.permission.ACCESS_BOOK_SERVICE"
Expand Down
8 changes: 6 additions & 2 deletions PluginDemo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@ buildscript {
repositories {
google()
jcenter()
maven {
url "../virtualapk-gradle-plugin/build/repo"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.didi.virtualapk:gradle:0.9.8.4'
classpath 'com.android.tools.build:gradle:4.2.0'
classpath 'com.didi.virtualapk:gradle:0.0.1-SNAPSHOT'
// classpath 'com.didi.virtualapk:gradle:0.9.8.4'
}
}

Expand Down
1 change: 1 addition & 0 deletions PluginDemo/debug.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
./gradlew assemblePlugin -Dorg.gradle.debug=true --no-daemon
2 changes: 1 addition & 1 deletion PluginDemo/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
4 changes: 4 additions & 0 deletions PluginDemo/settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
include ':app'
//include ':CoreLibrary'

//project(':CoreLibrary').path = "../CoreLibrary"

4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ dependencies {
testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.didi.virtualapk:core:0.9.6'
// compile project (':CoreLibrary')
// compile 'com.didi.virtualapk:core:0.9.6'
compile project (':CoreLibrary')

}
7 changes: 5 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ buildscript {
repositories {
jcenter()
google()
maven {
url "./virtualapk-gradle-plugin/build/repo"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.didi.virtualapk:gradle:0.9.8.4'
classpath 'com.android.tools.build:gradle:4.2.0'
classpath 'com.didi.virtualapk:gradle:0.0.1-SNAPSHOT'

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
6 changes: 4 additions & 2 deletions virtualapk-gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,11 @@ dependencies {
compile 'commons-codec:commons-codec:1.6'
compile 'org.ow2.asm:asm:4.0'
compile 'org.javassist:javassist:3.18.2-GA'
compile 'com.android.tools.build:gradle:3.0.0'
compile 'com.android.tools.build:gradle:4.2.0'
// compile 'com.android.tools.build:gradle:3.0.0'

}



apply from: 'upload.gradle'
apply from: 'upload.gradle'
2 changes: 1 addition & 1 deletion virtualapk-gradle-plugin/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
GROUP_ID=com.didi.virtualapk
ARTIFACT_ID=gradle
VERSION=0.9.8.4
VERSION=0.0.1-SNAPSHOT
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
1 change: 1 addition & 0 deletions virtualapk-gradle-plugin/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
':virtualapk-gralde-plugin'
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
package com.didi.virtualapk

import com.android.build.api.variant.ApplicationVariant
import com.android.build.api.variant.impl.ApplicationVariantImpl
import com.android.build.gradle.AppExtension
import com.android.build.gradle.AppPlugin
import com.android.build.gradle.internal.TaskContainerAdaptor
import com.android.build.gradle.internal.TaskFactory
import com.android.build.gradle.internal.api.ApplicationVariantImpl

//import com.android.build.gradle.internal.TaskContainerAdaptor

//import com.android.build.gradle.AppPlugin
//import com.android.build.gradle.internal.TaskContainerAdaptor
//import com.android.build.gradle.internal.TaskFactory
//import com.android.build.gradle.internal.api.ApplicationVariantImpl
import com.android.build.gradle.internal.plugins.AppPlugin
import com.android.build.gradle.internal.tasks.factory.TaskFactory
import com.android.build.gradle.internal.tasks.factory.TaskFactoryImpl
import com.android.build.gradle.internal.variant.ApplicationVariantData
import com.android.build.gradle.internal.variant.VariantFactory
import com.android.builder.core.VariantConfiguration
//import com.android.builder.core.VariantConfiguration
import com.android.builder.core.VariantType
import com.didi.virtualapk.tasks.AssemblePlugin
import com.didi.virtualapk.utils.Log
Expand Down Expand Up @@ -46,9 +56,7 @@ public abstract class BasePlugin implements Plugin<Project> {
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')
Expand All @@ -69,27 +77,34 @@ public abstract class BasePlugin implements Plugin<Project> {

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<Task>() {
@Override
void execute(Task task) {
task.dependsOn(variantPluginTaskName)
}
})

}
}
}
Expand All @@ -109,18 +124,19 @@ public abstract class BasePlugin implements Plugin<Project> {
def targetTasks = startParameter.taskNames

def pluginTasks = ['assemblePlugin'] as List<String>

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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -85,24 +85,24 @@ public class VAHostPlugin implements Plugin<Project> {

FileUtil.saveFile(vaHostDir, "versions", {
List<String> deps = new ArrayList<String>()
Log.i TAG, "Used compileClasspath: ${applicationVariant.name}"
Set<ArtifactDependencyGraph.HashableResolvedArtifactResult> 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<ArtifactDependencyGraph.HashableResolvedArtifactResult> 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
})
}
Expand Down Expand Up @@ -130,19 +130,20 @@ public class VAHostPlugin implements Plugin<Project> {
*/
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
// }
// }
// }

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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))
// }
}
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -45,11 +46,13 @@ public abstract class GradleTaskHooker<T extends Task> {
}

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() {
Expand Down
Loading