Skip to content

Commit 6e108e4

Browse files
committed
Release 3.1.3
1 parent 192eac9 commit 6e108e4

File tree

3 files changed

+85
-71
lines changed

3 files changed

+85
-71
lines changed

aop/ext.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
project.ext {
2-
pluginVersion = '3.1.2'
2+
pluginVersion = '3.1.3'
33
Properties properties = new Properties()
44
if (project.file('local.properties').exists()) {
55
properties.load(project.file('local.properties').newDataInputStream())

aop/src/main/groovy/com/sensorsdata/analytics/android/plugin/SensorsAnalyticsHookConfig.groovy

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ class SensorsAnalyticsHookConfig {
6464
'(Landroid/content/DialogInterface;I)V',
6565
1, 2,
6666
[Opcodes.ALOAD, Opcodes.ILOAD]))
67+
INTERFACE_METHODS.put('onClick(Landroid/content/DialogInterface;IZ)V', new SensorsAnalyticsMethodCell(
68+
'onClick',
69+
'(Landroid/content/DialogInterface;IZ)V',
70+
'android/content/DialogInterface$OnMultiChoiceClickListener',
71+
'trackDialog',
72+
'(Landroid/content/DialogInterface;I)V',
73+
1, 2,
74+
[Opcodes.ALOAD, Opcodes.ILOAD]))
6775
INTERFACE_METHODS.put('onItemSelected(Landroid/widget/AdapterView;Landroid/view/View;IJ)V', new SensorsAnalyticsMethodCell(
6876
'onItemSelected',
6977
'(Landroid/widget/AdapterView;Landroid/view/View;IJ)V',
@@ -224,6 +232,16 @@ class SensorsAnalyticsHookConfig {
224232
[Opcodes.ALOAD, Opcodes.ILOAD])
225233
LAMBDA_METHODS.put(onClick1.parent + onClick1.name + onClick1.desc, onClick1)
226234

235+
SensorsAnalyticsMethodCell onClick2 = new SensorsAnalyticsMethodCell(
236+
'onClick',
237+
'(Landroid/content/DialogInterface;IZ)V',
238+
'Landroid/content/DialogInterface$OnMultiChoiceClickListener;',
239+
'trackDialog',
240+
'(Landroid/content/DialogInterface;I)V',
241+
1, 2,
242+
[Opcodes.ALOAD, Opcodes.ILOAD])
243+
LAMBDA_METHODS.put(onClick2.parent + onClick2.name + onClick2.desc, onClick2)
244+
227245
SensorsAnalyticsMethodCell onItemClick = new SensorsAnalyticsMethodCell(
228246
'onItemClick',
229247
'(Landroid/widget/AdapterView;Landroid/view/View;IJ)V',

aop/src/main/groovy/com/sensorsdata/analytics/android/plugin/SensorsAnalyticsTransform.groovy

Lines changed: 66 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,10 @@ import java.util.concurrent.Callable
4242
import java.util.jar.JarEntry
4343
import java.util.jar.JarFile
4444
import java.util.jar.JarOutputStream
45-
import java.util.zip.ZipEntry
4645

4746
class SensorsAnalyticsTransform extends Transform {
4847
private SensorsAnalyticsTransformHelper transformHelper
49-
public static final String VERSION = "3.1.2"
48+
public static final String VERSION = "3.1.3"
5049
public static final String MIN_SDK_VERSION = "3.0.0"
5150
private WaitableExecutor waitableExecutor
5251

@@ -114,67 +113,17 @@ class SensorsAnalyticsTransform extends Transform {
114113

115114
//遍历目录
116115
input.directoryInputs.each { DirectoryInput directoryInput ->
117-
//Logger.info("||-->开始遍历特定目录 ${dest.absolutePath}")
118-
File dir = directoryInput.file
119-
File dest = outputProvider.getContentLocation(directoryInput.getName(),
120-
directoryInput.getContentTypes(), directoryInput.getScopes(),
121-
Format.DIRECTORY)
122-
FileUtils.forceMkdir(dest)
123-
String srcDirPath = dir.absolutePath
124-
String destDirPath = dest.absolutePath
125-
if (isIncremental) {
126-
Map<File, Status> fileStatusMap = directoryInput.getChangedFiles()
127-
for (Map.Entry<File, Status> changedFile : fileStatusMap.entrySet()) {
128-
Status status = changedFile.getValue()
129-
File inputFile = changedFile.getKey()
130-
String destFilePath = inputFile.absolutePath.replace(srcDirPath, destDirPath)
131-
File destFile = new File(destFilePath)
132-
switch (status) {
133-
case Status.NOTCHANGED:
134-
break
135-
case Status.REMOVED:
136-
Logger.info("目录 status = $status:$inputFile.absolutePath")
137-
if (destFile.exists()) {
138-
//noinspection ResultOfMethodCallIgnored
139-
destFile.delete()
140-
}
141-
break
142-
case Status.ADDED:
143-
case Status.CHANGED:
144-
Logger.info("目录 status = $status:$inputFile.absolutePath")
145-
File modified = modifyClassFile(dir, inputFile, context.getTemporaryDir())
146-
if (destFile.exists()) {
147-
destFile.delete()
148-
}
149-
if (modified != null) {
150-
FileUtils.copyFile(modified, destFile)
151-
modified.delete()
152-
} else {
153-
FileUtils.copyFile(inputFile, destFile)
154-
}
155-
break
156-
default:
157-
break
116+
if (waitableExecutor) {
117+
waitableExecutor.execute(new Callable<Object>() {
118+
@Override
119+
Object call() throws Exception {
120+
forEachDirectory(isIncremental, directoryInput, outputProvider, context)
121+
return null
158122
}
159-
}
123+
})
160124
} else {
161-
FileUtils.copyDirectory(dir, dest)
162-
dir.traverse(type: FileType.FILES, nameFilter: ~/.*\.class/) {
163-
File inputFile ->
164-
if (waitableExecutor) {
165-
waitableExecutor.execute(new Callable<Object>() {
166-
@Override
167-
Object call() throws Exception {
168-
forEachDir(dir, inputFile, context, srcDirPath, destDirPath)
169-
return null
170-
}
171-
})
172-
} else {
173-
forEachDir(dir, inputFile, context, srcDirPath, destDirPath)
174-
}
175-
}
125+
forEachDirectory(isIncremental, directoryInput, outputProvider, context)
176126
}
177-
178127
}
179128
}
180129
if (waitableExecutor) {
@@ -184,6 +133,58 @@ class SensorsAnalyticsTransform extends Transform {
184133
println("[SensorsAnalytics]: 此次编译共耗时:${System.currentTimeMillis() - startTime}毫秒")
185134
}
186135

136+
void forEachDirectory(boolean isIncremental, DirectoryInput directoryInput, TransformOutputProvider outputProvider, Context context){
137+
File dir = directoryInput.file
138+
File dest = outputProvider.getContentLocation(directoryInput.getName(),
139+
directoryInput.getContentTypes(), directoryInput.getScopes(),
140+
Format.DIRECTORY)
141+
FileUtils.forceMkdir(dest)
142+
String srcDirPath = dir.absolutePath
143+
String destDirPath = dest.absolutePath
144+
if (isIncremental) {
145+
Map<File, Status> fileStatusMap = directoryInput.getChangedFiles()
146+
for (Map.Entry<File, Status> changedFile : fileStatusMap.entrySet()) {
147+
Status status = changedFile.getValue()
148+
File inputFile = changedFile.getKey()
149+
String destFilePath = inputFile.absolutePath.replace(srcDirPath, destDirPath)
150+
File destFile = new File(destFilePath)
151+
switch (status) {
152+
case Status.NOTCHANGED:
153+
break
154+
case Status.REMOVED:
155+
Logger.info("目录 status = $status:$inputFile.absolutePath")
156+
if (destFile.exists()) {
157+
//noinspection ResultOfMethodCallIgnored
158+
destFile.delete()
159+
}
160+
break
161+
case Status.ADDED:
162+
case Status.CHANGED:
163+
Logger.info("目录 status = $status:$inputFile.absolutePath")
164+
File modified = modifyClassFile(dir, inputFile, context.getTemporaryDir())
165+
if (destFile.exists()) {
166+
destFile.delete()
167+
}
168+
if (modified != null) {
169+
FileUtils.copyFile(modified, destFile)
170+
modified.delete()
171+
} else {
172+
FileUtils.copyFile(inputFile, destFile)
173+
}
174+
break
175+
default:
176+
break
177+
}
178+
}
179+
} else {
180+
FileUtils.copyDirectory(dir, dest)
181+
dir.traverse(type: FileType.FILES, nameFilter: ~/.*\.class/) {
182+
File inputFile ->
183+
forEachDir(dir, inputFile, context, srcDirPath, destDirPath)
184+
}
185+
}
186+
}
187+
187188
void forEachDir(File dir, File inputFile, Context context, String srcDirPath, String destDirPath) {
188189
File modified = modifyClassFile(dir, inputFile, context.getTemporaryDir())
189190
if (modified != null) {
@@ -197,14 +198,8 @@ class SensorsAnalyticsTransform extends Transform {
197198
}
198199

199200
void forEachJar(boolean isIncremental, JarInput jarInput, TransformOutputProvider outputProvider, Context context) {
200-
String destName = jarInput.file.name
201-
//截取文件路径的 md5 值重命名输出文件,因为可能同名,会覆盖
202-
def hexName = DigestUtils.md5Hex(jarInput.file.absolutePath).substring(0, 8)
203-
if (destName.endsWith(".jar")) {
204-
destName = destName.substring(0, destName.length() - 4)
205-
}
206201
//获得输出文件
207-
File destFile = outputProvider.getContentLocation(destName + "_" + hexName, jarInput.contentTypes, jarInput.scopes, Format.JAR)
202+
File destFile = outputProvider.getContentLocation(jarInput.name, jarInput.contentTypes, jarInput.scopes, Format.JAR)
208203
if (isIncremental) {
209204
Status status = jarInput.getStatus()
210205
switch (status) {
@@ -279,13 +274,14 @@ class SensorsAnalyticsTransform extends Transform {
279274
//ignore
280275
} else {
281276
String className
282-
ZipEntry zipEntry = new ZipEntry(entryName)
283-
jarOutputStream.putNextEntry(zipEntry)
277+
JarEntry entry = new JarEntry(entryName)
278+
jarOutputStream.putNextEntry(entry)
284279
byte[] modifiedClassBytes = null
285-
byte[] sourceClassBytes = null
280+
byte[] sourceClassBytes
286281
try {
287282
sourceClassBytes = IOUtils.toByteArray(inputStream)
288283
} catch (Exception e) {
284+
e.printStackTrace()
289285
return null
290286
}
291287
if (entryName.endsWith(".class")) {

0 commit comments

Comments
 (0)