11package top.niunaijun.blackobfuscator
22
33import com.android.build.gradle.AppExtension
4+ import com.android.build.gradle.internal.dsl.BuildType
45import com.android.build.gradle.internal.dsl.ProductFlavor
56import com.android.build.gradle.internal.tasks.DexMergingTask
67import org.gradle.api.*
@@ -49,23 +50,23 @@ public class ObfPlugin implements Plugin<Project> {
4950 addTask(" minifyDebugWithR8" , tasks)
5051
5152 if (android != null ) {
53+ android. buildTypes. all(new Action<BuildType > () {
54+ @Override
55+ void execute (BuildType buildType ) {
56+ def name = upperCaseFirst(buildType. name)
57+ def names = [buildType. name, name]
58+ for (String p : names) {
59+ addOtherTask(p)
60+ }
61+ }
62+ })
5263 android. productFlavors. all(new Action<ProductFlavor > () {
5364 @Override
5465 void execute (ProductFlavor productFlavor ) {
55- println (" ProductFlavor: " + name)
5666 def name = upperCaseFirst(productFlavor. name)
5767 def names = [productFlavor. name, name]
5868 for (String p : names) {
59- addTask(" mergeDex${ p} Release" , tasks)
60- addTask(" mergeDex${ p} Debug" , tasks)
61- addTask(" mergeLibDex${ p} Debug" , tasks)
62- addTask(" mergeProjectDex${ p} Debug" , tasks)
63-
64- addTask(" transformDexArchiveWithDexMergerFor${ p} Debug" , tasks)
65- addTask(" transformDexArchiveWithDexMergerFor${ p} Release" , tasks)
66-
67- addTask(" minify${ p} ReleaseWithR8" , tasks)
68- addTask(" minify${ p} DebugWithR8" , tasks)
69+ addOtherTask(p)
6970 }
7071 }
7172 })
@@ -80,6 +81,19 @@ public class ObfPlugin implements Plugin<Project> {
8081 }
8182 }
8283
84+ private void addOtherTask (String name ) {
85+ addTask(" mergeDex${ name} Release" , tasks)
86+ addTask(" mergeDex${ name} Debug" , tasks)
87+ addTask(" mergeLibDex${ name} Debug" , tasks)
88+ addTask(" mergeProjectDex${ name} Debug" , tasks)
89+
90+ addTask(" transformDexArchiveWithDexMergerFor${ name} Debug" , tasks)
91+ addTask(" transformDexArchiveWithDexMergerFor${ name} Release" , tasks)
92+
93+ addTask(" minify${ name} ReleaseWithR8" , tasks)
94+ addTask(" minify${ name} DebugWithR8" , tasks)
95+ }
96+
8397 private String upperCaseFirst (String val ) {
8498 char [] arr = val. toCharArray();
8599 arr[0 ] = Character . toUpperCase(arr[0 ]);
@@ -89,8 +103,11 @@ public class ObfPlugin implements Plugin<Project> {
89103 private void addTask (String name , List<Task > tasks ) {
90104 try {
91105 // Protected code
92- tasks. add(mProject. tasks. getByName(name))
93- println (" add Task $name " )
106+ Task task = mProject. tasks. getByName(name)
107+ if (! tasks. contains(task)) {
108+ tasks. add(task)
109+ println (" add Task $name " )
110+ }
94111 } catch (UnknownTaskException e1) {
95112 // Catch block
96113 }
0 commit comments