@@ -33,19 +33,20 @@ import groovy.io.FileType
3333import org.apache.commons.codec.digest.DigestUtils
3434import org.apache.commons.io.FileUtils
3535import org.apache.commons.io.IOUtils
36+ import org.apache.commons.io.output.ByteArrayOutputStream
3637import org.objectweb.asm.ClassReader
3738import org.objectweb.asm.ClassVisitor
3839import org.objectweb.asm.ClassWriter
3940
41+ import java.lang.reflect.Field
4042import java.util.concurrent.Callable
4143import java.util.jar.JarEntry
4244import java.util.jar.JarFile
4345import java.util.jar.JarOutputStream
44- import java.util.zip.ZipEntry
4546
4647class SensorsAnalyticsTransform extends Transform {
4748 private SensorsAnalyticsTransformHelper transformHelper
48- public static final String VERSION = " 3.2.4 "
49+ public static final String VERSION = " 3.2.5 "
4950 public static final String MIN_SDK_VERSION = " 4.0.7"
5051 private WaitableExecutor waitableExecutor
5152 private URLClassLoader urlClassLoader
@@ -126,7 +127,6 @@ class SensorsAnalyticsTransform extends Transform {
126127 if (waitableExecutor) {
127128 waitableExecutor. waitForTasksWithQuickFail(true )
128129 }
129-
130130 println (" [SensorsAnalytics]: 此次编译共耗时:${ System.currentTimeMillis() - startTime} 毫秒" )
131131 }
132132
@@ -176,7 +176,9 @@ class SensorsAnalyticsTransform extends Transform {
176176 try {
177177 Class rnClazz = urlClassLoader. loadClass(" com.sensorsdata.analytics.RNSensorsAnalyticsPackage" )
178178 try {
179- rnClazz. getDeclaredField(" VERSION" )
179+ Field versionField = rnClazz. getDeclaredField(" VERSION" )
180+ versionField. setAccessible(true )
181+ transformHelper. rnVersion = versionField. get(null ) as String
180182 transformHelper. rnState = SensorsAnalyticsTransformHelper . RN_STATE . HAS_VERSION
181183 } catch (Exception e) {
182184 transformHelper. rnState = SensorsAnalyticsTransformHelper . RN_STATE . NO_VERSION
@@ -325,6 +327,7 @@ class SensorsAnalyticsTransform extends Transform {
325327 try {
326328 inputStream = file. getInputStream(jarEntry)
327329 } catch (Exception e) {
330+ IOUtils . closeQuietly(inputStream)
328331 e. printStackTrace()
329332 return null
330333 }
@@ -338,9 +341,11 @@ class SensorsAnalyticsTransform extends Transform {
338341 byte [] sourceClassBytes
339342 try {
340343 jarOutputStream. putNextEntry(entry)
341- sourceClassBytes = IOUtils . toByteArray (inputStream)
344+ sourceClassBytes = SensorsAnalyticsUtil . toByteArrayAndAutoCloseStream (inputStream)
342345 } catch (Exception e) {
343346 Logger . error(" Exception encountered while processing jar: " + jarFile. getAbsolutePath())
347+ IOUtils . closeQuietly(file)
348+ IOUtils . closeQuietly(jarOutputStream)
344349 e. printStackTrace()
345350 return null
346351 }
@@ -394,7 +399,7 @@ class SensorsAnalyticsTransform extends Transform {
394399 String className = path2ClassName(classFile. absolutePath. replace(dir. absolutePath + File . separator, " " ))
395400 ClassNameAnalytics classNameAnalytics = transformHelper. analytics(className)
396401 if (classNameAnalytics. isShouldModify) {
397- byte [] sourceClassBytes = IOUtils . toByteArray (new FileInputStream (classFile))
402+ byte [] sourceClassBytes = SensorsAnalyticsUtil . toByteArrayAndAutoCloseStream (new FileInputStream (classFile))
398403 byte [] modifiedClassBytes = modifyClass(sourceClassBytes, classNameAnalytics)
399404 if (modifiedClassBytes) {
400405 modified = new File (tempDir, className. replace(' .' , ' ' ) + ' .class' )
0 commit comments