1
1
package cn.hx.plugin.junkcode.plugin
2
2
3
- import cn.hx.plugin.junkcode.ext.AndroidJunkCodeExt
4
- import cn.hx.plugin.junkcode.ext.JunkCodeConfig
5
- import cn.hx.plugin.junkcode.task.AndroidJunkCodeTask
3
+
6
4
import org.gradle.api.Plugin
7
5
import org.gradle.api.Project
8
6
@@ -19,78 +17,8 @@ class AndroidJunkCodePlugin implements Plugin<Project> {
19
17
if (androidComponents && androidComponents. hasProperty(" pluginVersion" )
20
18
&& (androidComponents. pluginVersion. major > 7 || androidComponents. pluginVersion. minor >= 4 )) {
21
19
new NewVariantApiPlugin (). apply(project)
22
- return
23
- }
24
- def generateJunkCodeExt = project. extensions. create(" androidJunkCode" , AndroidJunkCodeExt , project. container(JunkCodeConfig ))
25
- android. applicationVariants. all { variant ->
26
- def variantName = variant. name
27
- def junkCodeConfig = generateJunkCodeExt. variantConfig. findByName(variantName)
28
- if (generateJunkCodeExt. debug) {
29
- println (" AndroidJunkCode: generate code for variant $variantName ? ${ junkCodeConfig != null} " )
30
- }
31
- if (junkCodeConfig) {
32
- def junkCodeNamespace = " "
33
- if (android. hasProperty(" namespace" ) && android. namespace) {// AGP 4.2.0+
34
- junkCodeNamespace = android. namespace
35
- } else {
36
- // 从AndroidManifest.xml找到package name
37
- def parser = new XmlParser ()
38
- for (int i = 0 ; i < sourceSets. size(); i++ ) {
39
- def sourceSet = sourceSets[i]
40
- if (sourceSet. manifestFile. exists()) {
41
- def node = parser. parse(sourceSet. manifestFile)
42
- if (node. attribute(" package" )) {
43
- junkCodeNamespace = node. attribute(" package" )
44
- break
45
- }
46
- }
47
- }
48
- }
49
- def junkCodeOutDir = new File (project. buildDir, " generated/source/junk/$variantName " )
50
- def generateJunkCodeTaskName = " generate${ variantName.capitalize()} JunkCode"
51
- def generateJunkCodeTask = project. tasks. create(generateJunkCodeTaskName, AndroidJunkCodeTask ) {
52
- config = junkCodeConfig
53
- namespace = junkCodeNamespace
54
- outDir = junkCodeOutDir
55
- }
56
- def manifestFile = new File (junkCodeOutDir, " AndroidManifest.xml" )
57
- // 将自动生成的AndroidManifest.xml加入到一个未被占用的manifest位置(如果都占用了就不合并了,通常较少出现全被占用情况)
58
- for (int i = variant. sourceSets. size() - 1 ; i >= 0 ; i-- ) {
59
- def sourceSet = variant. sourceSets[i]
60
- if (! sourceSet. manifestFile. exists()) {
61
- sourceSet. manifest. srcFile(manifestFile)
62
- // AGP4.1.0+
63
- def processManifestTaskName = " process${ variantName.capitalize()} MainManifest"
64
- def processManifestTask = project. tasks. findByName(processManifestTaskName)
65
- if (processManifestTask == null ) {
66
- // before AGP4.1.0
67
- processManifestTaskName = " process${ variantName.capitalize()} Manifest"
68
- processManifestTask = project. tasks. findByName(processManifestTaskName)
69
- }
70
- if (processManifestTask) {
71
- project. tasks. named(processManifestTaskName). configure {
72
- it. dependsOn(generateJunkCodeTask)
73
- }
74
- }
75
- break
76
- }
77
- }
78
- def javaDir = new File (junkCodeOutDir, " java" )
79
- variant. registerJavaGeneratingTask(generateJunkCodeTask, javaDir)
80
- def resDir = new File (junkCodeOutDir, " res" )
81
- if (variant. respondsTo(" registerGeneratedResFolders" )) {// AGP 3.0.0+
82
- variant. registerGeneratedResFolders(project
83
- .files(resDir)
84
- .builtBy(generateJunkCodeTask))
85
- if (variant. hasProperty(" mergeResourcesProvider" )) {// AGP 3.3.0+
86
- variant. mergeResourcesProvider. configure { dependsOn(generateJunkCodeTask) }
87
- } else {
88
- variant. mergeResources. dependsOn(generateJunkCodeTask)
89
- }
90
- } else {
91
- variant. registerResGeneratingTask(generateJunkCodeTask, resDir)// AGP 1.1.0+
92
- }
93
- }
20
+ } else {
21
+ new OldVariantApiPlugin (). apply(project)
94
22
}
95
23
}
96
24
}
0 commit comments