Skip to content

Commit b5c3da3

Browse files
author
weiqiangliu
committed
Release 3.3.9
1 parent e76a6e1 commit b5c3da3

File tree

5 files changed

+72
-50
lines changed

5 files changed

+72
-50
lines changed

plugin/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.3.8'
2+
pluginVersion = '3.3.9'
33
Properties properties = new Properties()
44
if (project.file('local.properties').exists()) {
55
properties.load(project.file('local.properties').newDataInputStream())

plugin/src/main/groovy/com/sensorsdata/analytics/android/plugin/SensorsAnalyticsClassVisitor.groovy

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.sensorsdata.analytics.android.plugin
1818

1919
import com.sensorsdata.analytics.android.plugin.hook.SensorsPushInjected
20+
import com.sensorsdata.analytics.android.plugin.hook.config.SensorsFragmentHookConfig
2021
import com.sensorsdata.analytics.android.plugin.utils.VersionUtils
2122
import org.objectweb.asm.AnnotationVisitor
2223
import org.objectweb.asm.ClassVisitor
@@ -57,7 +58,7 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
5758
this.classVisitor = classVisitor
5859
this.classNameAnalytics = classNameAnalytics
5960
this.transformHelper = transformHelper
60-
isAndroidTv = VersionUtils.isTvVersion();
61+
isAndroidTv = VersionUtils.isTvVersion()
6162
}
6263

6364
private
@@ -107,7 +108,7 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
107108
if (SensorsAnalyticsUtil.isInstanceOfFragment(mSuperName)) {
108109
MethodVisitor mv
109110
// 添加剩下的方法,确保super.onHiddenChanged(hidden);等先被调用
110-
Iterator<Map.Entry<String, SensorsAnalyticsMethodCell>> iterator = SensorsAnalyticsHookConfig.FRAGMENT_METHODS.entrySet().iterator()
111+
Iterator<Map.Entry<String, SensorsAnalyticsMethodCell>> iterator = SensorsFragmentHookConfig.FRAGMENT_METHODS.entrySet().iterator()
111112
while (iterator.hasNext()) {
112113
Map.Entry<String, SensorsAnalyticsMethodCell> entry = iterator.next()
113114
String key = entry.getKey()
@@ -120,7 +121,7 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
120121
// call super
121122
visitMethodWithLoadedParams(mv, Opcodes.INVOKESPECIAL, mSuperName, methodCell.name, methodCell.desc, methodCell.paramsStart, methodCell.paramsCount, methodCell.opcodes)
122123
// call injected method
123-
visitMethodWithLoadedParams(mv, Opcodes.INVOKESTATIC, SensorsAnalyticsHookConfig.SENSORS_ANALYTICS_API, methodCell.agentName, methodCell.agentDesc, methodCell.paramsStart, methodCell.paramsCount, methodCell.opcodes)
124+
visitMethodWithLoadedParams(mv, Opcodes.INVOKESTATIC, SensorsFragmentHookConfig.SENSORS_FRAGMENT_TRACK_HELPER_API, methodCell.agentName, methodCell.agentDesc, methodCell.paramsStart, methodCell.paramsCount, methodCell.opcodes)
124125
mv.visitInsn(Opcodes.RETURN)
125126
mv.visitMaxs(methodCell.paramsCount, methodCell.paramsCount)
126127
mv.visitEnd()
@@ -275,8 +276,8 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
275276
methodVisitor.visitVarInsn(ISTORE, third)
276277
localIds.add(third)
277278
} else if (SensorsAnalyticsUtil.isInstanceOfFragment(mSuperName)
278-
&& SensorsAnalyticsHookConfig.FRAGMENT_METHODS.get(nameDesc) != null) {
279-
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig.FRAGMENT_METHODS.get(nameDesc)
279+
&& SensorsFragmentHookConfig.FRAGMENT_METHODS.get(nameDesc) != null) {
280+
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsFragmentHookConfig.FRAGMENT_METHODS.get(nameDesc)
280281
localIds = new ArrayList<>()
281282
Type[] types = Type.getArgumentTypes(desc)
282283
for (int i = 1; i < sensorsAnalyticsMethodCell.paramsCount; i++) {
@@ -474,14 +475,14 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
474475
* androidx/fragment/app/Fragment,androidx/fragment/app/ListFragment,androidx/fragment/app/DialogFragment
475476
*/
476477
if (SensorsAnalyticsUtil.isInstanceOfFragment(mSuperName)) {
477-
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig.FRAGMENT_METHODS.get(nameDesc)
478+
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsFragmentHookConfig.FRAGMENT_METHODS.get(nameDesc)
478479
if (sensorsAnalyticsMethodCell != null) {
479480
visitedFragMethods.add(nameDesc)
480481
methodVisitor.visitVarInsn(ALOAD, 0)
481482
for (int i = 1; i < sensorsAnalyticsMethodCell.paramsCount; i++) {
482483
methodVisitor.visitVarInsn(sensorsAnalyticsMethodCell.opcodes.get(i), localIds[i - 1])
483484
}
484-
methodVisitor.visitMethodInsn(INVOKESTATIC, SensorsAnalyticsHookConfig.SENSORS_ANALYTICS_API, sensorsAnalyticsMethodCell.agentName, sensorsAnalyticsMethodCell.agentDesc, false)
485+
methodVisitor.visitMethodInsn(INVOKESTATIC, SensorsFragmentHookConfig.SENSORS_FRAGMENT_TRACK_HELPER_API, sensorsAnalyticsMethodCell.agentName, sensorsAnalyticsMethodCell.agentDesc, false)
485486
isHasTracked = true
486487
return
487488
}

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

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -243,46 +243,6 @@ class SensorsAnalyticsHookConfig {
243243
}
244244
}
245245

246-
/**
247-
* Fragment中的方法
248-
*/
249-
public final static HashMap<String, SensorsAnalyticsMethodCell> FRAGMENT_METHODS = new HashMap<>()
250-
251-
static {
252-
FRAGMENT_METHODS.put('onResume()V', new SensorsAnalyticsMethodCell(
253-
'onResume',
254-
'()V',
255-
'',// parent省略,均为 android/app/Fragment 或 android/support/v4/app/Fragment
256-
'trackFragmentResume',
257-
'(Ljava/lang/Object;)V',
258-
0, 1,
259-
[Opcodes.ALOAD]))
260-
FRAGMENT_METHODS.put('setUserVisibleHint(Z)V', new SensorsAnalyticsMethodCell(
261-
'setUserVisibleHint',
262-
'(Z)V',
263-
'',// parent省略,均为 android/app/Fragment 或 android/support/v4/app/Fragment
264-
'trackFragmentSetUserVisibleHint',
265-
'(Ljava/lang/Object;Z)V',
266-
0, 2,
267-
[Opcodes.ALOAD, Opcodes.ILOAD]))
268-
FRAGMENT_METHODS.put('onHiddenChanged(Z)V', new SensorsAnalyticsMethodCell(
269-
'onHiddenChanged',
270-
'(Z)V',
271-
'',
272-
'trackOnHiddenChanged',
273-
'(Ljava/lang/Object;Z)V',
274-
0, 2,
275-
[Opcodes.ALOAD, Opcodes.ILOAD]))
276-
FRAGMENT_METHODS.put('onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V', new SensorsAnalyticsMethodCell(
277-
'onViewCreated',
278-
'(Landroid/view/View;Landroid/os/Bundle;)V',
279-
'',
280-
'onFragmentViewCreated',
281-
'(Ljava/lang/Object;Landroid/view/View;Landroid/os/Bundle;)V',
282-
0, 3,
283-
[Opcodes.ALOAD, Opcodes.ALOAD, Opcodes.ALOAD]))
284-
}
285-
286246
/**
287247
* android.gradle 3.2.1 版本中,针对 Lambda 表达式处理
288248
*/

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ import java.util.jar.JarOutputStream
4848

4949
class SensorsAnalyticsTransform extends Transform {
5050
private SensorsAnalyticsTransformHelper transformHelper
51-
public static final String VERSION = "3.3.8"
52-
public static final String MIN_SDK_VERSION = "5.1.0"
51+
public static final String VERSION = "3.3.9"
52+
public static final String MIN_SDK_VERSION = "5.4.2"
5353
private WaitableExecutor waitableExecutor
5454
private URLClassLoader urlClassLoader
5555
// “com.sensorsdata.analytics.android.sdk.SensorsDataAPI” 类所在路径
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.sensorsdata.analytics.android.plugin.hook.config;
2+
3+
import com.sensorsdata.analytics.android.plugin.SensorsAnalyticsMethodCell;
4+
5+
import org.objectweb.asm.Opcodes;
6+
7+
import java.util.Arrays;
8+
import java.util.Collections;
9+
import java.util.HashMap;
10+
11+
public class SensorsFragmentHookConfig {
12+
public static final String SENSORS_FRAGMENT_TRACK_HELPER_API = "com/sensorsdata/analytics/android/sdk/autotrack/aop/FragmentTrackHelper";
13+
14+
/**
15+
* Fragment中的方法
16+
*/
17+
public final static HashMap<String, SensorsAnalyticsMethodCell> FRAGMENT_METHODS = new HashMap<>();
18+
19+
static {
20+
FRAGMENT_METHODS.put("onResume()V", new SensorsAnalyticsMethodCell(
21+
"onResume",
22+
"()V",
23+
"",// parent省略,均为 android/app/Fragment 或 android/support/v4/app/Fragment
24+
"trackFragmentResume",
25+
"(Ljava/lang/Object;)V",
26+
0, 1,
27+
Collections.singletonList(Opcodes.ALOAD)));
28+
FRAGMENT_METHODS.put("setUserVisibleHint(Z)V", new SensorsAnalyticsMethodCell(
29+
"setUserVisibleHint",
30+
"(Z)V",
31+
"",// parent省略,均为 android/app/Fragment 或 android/support/v4/app/Fragment
32+
"trackFragmentSetUserVisibleHint",
33+
"(Ljava/lang/Object;Z)V",
34+
0, 2,
35+
Arrays.asList(Opcodes.ALOAD, Opcodes.ILOAD)));
36+
FRAGMENT_METHODS.put("onHiddenChanged(Z)V", new SensorsAnalyticsMethodCell(
37+
"onHiddenChanged",
38+
"(Z)V",
39+
"",
40+
"trackOnHiddenChanged",
41+
"(Ljava/lang/Object;Z)V",
42+
0, 2,
43+
Arrays.asList(Opcodes.ALOAD, Opcodes.ILOAD)));
44+
FRAGMENT_METHODS.put("onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V", new SensorsAnalyticsMethodCell(
45+
"onViewCreated",
46+
"(Landroid/view/View;Landroid/os/Bundle;)V",
47+
"",
48+
"onFragmentViewCreated",
49+
"(Ljava/lang/Object;Landroid/view/View;Landroid/os/Bundle;)V",
50+
0, 3,
51+
Arrays.asList(Opcodes.ALOAD, Opcodes.ALOAD, Opcodes.ALOAD)));
52+
FRAGMENT_METHODS.put("onPause()V", new SensorsAnalyticsMethodCell(
53+
"onPause",
54+
"()V",
55+
"",// parent省略,均为 android/app/Fragment 或 android/support/v4/app/Fragment
56+
"trackFragmentPause",
57+
"(Ljava/lang/Object;)V",
58+
0, 1,
59+
Collections.singletonList(Opcodes.ALOAD)));
60+
}
61+
}

0 commit comments

Comments
 (0)