@@ -27,6 +27,8 @@ import java.util.zip.ZipEntry
2727class SensorsAnalyticsTransform extends Transform {
2828 private static Project project
2929 private static HashSet<String > exclude = [' com.sensorsdata.analytics.android.sdk' , ' android.support' ]
30+ private static HashSet<String > include = []
31+ protected static boolean disableJar
3032
3133 SensorsAnalyticsTransform (Project project ) {
3234 this . project = project
@@ -79,9 +81,15 @@ class SensorsAnalyticsTransform extends Transform {
7981 outputProvider. deleteAll()
8082 }
8183
82- HashSet<String > inputPackages = project. sensorsAnalytics. exclude
83- if (inputPackages != null ) {
84- exclude. addAll(inputPackages)
84+ disableJar = project. sensorsAnalytics. disableJar
85+ HashSet<String > excludePackages = project. sensorsAnalytics. exclude
86+ if (excludePackages != null ) {
87+ exclude. addAll(excludePackages)
88+ }
89+
90+ HashSet<String > includePackages = project. sensorsAnalytics. include
91+ if (includePackages != null ) {
92+ include. addAll(includePackages)
8593 }
8694
8795 /**
@@ -106,9 +114,9 @@ class SensorsAnalyticsTransform extends Transform {
106114 File dest = outputProvider. getContentLocation(destName + " _" + hexName, jarInput. contentTypes, jarInput. scopes, Format . JAR )
107115
108116 def modifiedJar = null
109- if (! project. sensorsAnalytics. disableJar) {
117+ // if (!project.sensorsAnalytics.disableJar) {
110118 modifiedJar = modifyJarFile(jarInput. file, context. getTemporaryDir())
111- }
119+ // }
112120 if (modifiedJar == null ) {
113121 modifiedJar = jarInput. file
114122 }
@@ -160,25 +168,36 @@ class SensorsAnalyticsTransform extends Transform {
160168 return true
161169 }
162170
163- private static boolean isShouldModify (String className ) {
164- Iterator<String > iterator = exclude. iterator()
165- while (iterator. hasNext()) {
166- String packageName = iterator. next()
167- if (className. startsWith(packageName)) {
168- return false
171+ private static boolean isShouldModifyClass (String className ) {
172+ if (! disableJar) {
173+ Iterator<String > iterator = exclude. iterator()
174+ while (iterator. hasNext()) {
175+ String packageName = iterator. next()
176+ if (className. startsWith(packageName)) {
177+ return false
178+ }
179+ }
180+ return true
181+ } else {
182+ Iterator<String > iterator = include. iterator()
183+ while (iterator. hasNext()) {
184+ String packageName = iterator. next()
185+ if (className. startsWith(packageName)) {
186+ return true
187+ }
169188 }
189+ return false
170190 }
171- return true
172191 }
173192
174193 /**
175194 * 修改 jar 文件中对应字节码
176195 */
177196 private static File modifyJarFile (File jarFile , File tempDir ) {
178197 if (jarFile) {
179- if (isShouldModifyJar(jarFile. getName())) {
198+ // if (isShouldModifyJar(jarFile.getName())) {
180199 return modifyJar(jarFile, tempDir, true )
181- }
200+ // }
182201
183202 }
184203 return null
@@ -216,7 +235,7 @@ class SensorsAnalyticsTransform extends Transform {
216235 byte [] sourceClassBytes = IOUtils . toByteArray(inputStream)
217236 if (entryName. endsWith(" .class" )) {
218237 className = entryName. replace(" /" , " ." ). replace(" .class" , " " )
219- if (isShouldModify (className)) {
238+ if (isShouldModifyClass (className)) {
220239 modifiedClassBytes = modifyClasses(className, sourceClassBytes)
221240 }
222241 }
@@ -256,7 +275,6 @@ class SensorsAnalyticsTransform extends Transform {
256275 return classWriter. toByteArray()
257276 }
258277
259-
260278 /**
261279 * 目录文件中修改对应字节码
262280 */
@@ -265,7 +283,7 @@ class SensorsAnalyticsTransform extends Transform {
265283 FileOutputStream outputStream = null
266284 try {
267285 String className = path2ClassName(classFile. absolutePath. replace(dir. absolutePath + File . separator, " " ))
268- if (isShouldModify (className)) {
286+ if (isShouldModifyClass (className)) {
269287 byte [] sourceClassBytes = IOUtils . toByteArray(new FileInputStream (classFile))
270288 byte [] modifiedClassBytes = modifyClasses(className, sourceClassBytes)
271289 if (modifiedClassBytes) {
0 commit comments