Skip to content

Commit 32ddbf9

Browse files
committed
Release 3.1.6
1 parent 16b3917 commit 32ddbf9

File tree

8 files changed

+159
-100
lines changed

8 files changed

+159
-100
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.1.5'
2+
pluginVersion = '3.1.6'
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: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
320320
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig.FRAGMENT_METHODS.get(nameDesc)
321321
if (sensorsAnalyticsMethodCell != null) {
322322
visitedFragMethods.add(nameDesc)
323-
if (isSetUserVisibleHint){
323+
if (isSetUserVisibleHint) {
324324
methodVisitor.visitVarInsn(ALOAD, 0)
325325
methodVisitor.visitVarInsn(ILOAD, variableID)
326326
methodVisitor.visitMethodInsn(Opcodes.INVOKESTATIC, SensorsAnalyticsHookConfig.SENSORS_ANALYTICS_API, sensorsAnalyticsMethodCell.agentName, sensorsAnalyticsMethodCell.agentDesc, false)
@@ -361,8 +361,10 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
361361
return
362362
}
363363

364-
if ((mClassName.startsWith('android/') || mClassName.startsWith('androidx/')) && !(mClassName.startsWith("android/support/v17/leanback") || mClassName.startsWith("androidx/leanback"))) {
365-
return
364+
if (!SensorsAnalyticsUtil.isTargetClassInSpecial(mClassName)) {
365+
if ((mClassName.startsWith('android/') || mClassName.startsWith('androidx/')) && !(mClassName.startsWith("android/support/v17/leanback") || mClassName.startsWith("androidx/leanback"))) {
366+
return
367+
}
366368
}
367369

368370
if (nameDesc == 'onItemSelected(Landroid/widget/AdapterView;Landroid/view/View;IJ)V' || nameDesc == "onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V") {
@@ -397,11 +399,13 @@ class SensorsAnalyticsClassVisitor extends ClassVisitor {
397399
isHasTracked = true
398400
return
399401
} else {
400-
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig.INTERFACE_METHODS.get(nameDesc)
401-
if (sensorsAnalyticsMethodCell != null && mInterfaces.contains(sensorsAnalyticsMethodCell.parent)) {
402-
visitMethodWithLoadedParams(methodVisitor, INVOKESTATIC, SensorsAnalyticsHookConfig.SENSORS_ANALYTICS_API, sensorsAnalyticsMethodCell.agentName, sensorsAnalyticsMethodCell.agentDesc, sensorsAnalyticsMethodCell.paramsStart, sensorsAnalyticsMethodCell.paramsCount, sensorsAnalyticsMethodCell.opcodes)
403-
isHasTracked = true
404-
return
402+
for (interfaceName in mInterfaces) {
403+
SensorsAnalyticsMethodCell sensorsAnalyticsMethodCell = SensorsAnalyticsHookConfig.INTERFACE_METHODS.get(interfaceName + nameDesc)
404+
if (sensorsAnalyticsMethodCell != null) {
405+
visitMethodWithLoadedParams(methodVisitor, INVOKESTATIC, SensorsAnalyticsHookConfig.SENSORS_ANALYTICS_API, sensorsAnalyticsMethodCell.agentName, sensorsAnalyticsMethodCell.agentDesc, sensorsAnalyticsMethodCell.paramsStart, sensorsAnalyticsMethodCell.paramsCount, sensorsAnalyticsMethodCell.opcodes)
406+
isHasTracked = true
407+
return
408+
}
405409
}
406410
}
407411
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ import org.gradle.internal.reflect.Instantiator
2222

2323

2424
class SensorsAnalyticsExtension {
25-
boolean debug = false
26-
boolean disableJar = false
27-
boolean useInclude = false
28-
boolean lambdaEnabled = true
25+
public boolean debug = false
26+
public boolean disableJar = false
27+
public boolean useInclude = false
28+
public boolean lambdaEnabled = true
2929

30-
ArrayList<String> exclude = []
31-
ArrayList<String> include = []
30+
public ArrayList<String> exclude = []
31+
public ArrayList<String> include = []
3232

33-
SensorsAnalyticsSDKExtension sdk
33+
public SensorsAnalyticsSDKExtension sdk
3434

3535
SensorsAnalyticsExtension(Instantiator ins) {
3636
sdk = ins.newInstance(SensorsAnalyticsSDKExtension)

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

Lines changed: 110 additions & 76 deletions
Large diffs are not rendered by default.

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ package com.sensorsdata.analytics.android.plugin
1919

2020
class SensorsAnalyticsSDKExtension {
2121
// 同SensorsAnalyticsSDKHookConfig中方法对应, disableIMEI,disableLog,disableJsInterface,disableAndroidID
22-
boolean disableIMEI = false
23-
boolean disableLog = false
24-
boolean disableJsInterface = false
25-
boolean disableAndroidID = false
26-
boolean disableMacAddress = false
27-
boolean disableCarrier = false
22+
public boolean disableIMEI = false
23+
public boolean disableLog = false
24+
public boolean disableJsInterface = false
25+
public boolean disableAndroidID = false
26+
public boolean disableMacAddress = false
27+
public boolean disableCarrier = false
2828

2929
@Override
3030
String toString() {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import java.util.jar.JarOutputStream
4545

4646
class SensorsAnalyticsTransform extends Transform {
4747
private SensorsAnalyticsTransformHelper transformHelper
48-
public static final String VERSION = "3.1.5"
48+
public static final String VERSION = "3.1.6"
4949
public static final String MIN_SDK_VERSION = "3.0.0"
5050
private WaitableExecutor waitableExecutor
5151

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,15 @@ class SensorsAnalyticsTransformHelper {
2323
SensorsAnalyticsSDKHookConfig sensorsAnalyticsHookConfig
2424
boolean disableSensorsAnalyticsMultiThread
2525
boolean disableSensorsAnalyticsIncremental
26-
HashSet<String> exclude = ['com.sensorsdata.analytics.android.sdk', 'android.support', 'androidx', 'com.qiyukf', 'android.arch']
26+
HashSet<String> exclude = ['com.sensorsdata.analytics.android.sdk', 'android.support', 'androidx', 'com.qiyukf', 'android.arch', 'com.google.android']
2727
HashSet<String> include = ['butterknife.internal.DebouncingOnClickListener',
2828
'com.jakewharton.rxbinding.view.ViewClickOnSubscribe',
2929
'com.facebook.react.uimanager.NativeViewHierarchyManager']
30+
/** 将一些特例需要排除在外 */
31+
public static final HashSet<String> special = ['android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener',
32+
'com.google.android.material.tabs.TabLayout$ViewPagerOnTabSelectedListener',
33+
'android.support.v7.app.ActionBarDrawerToggle',
34+
'androidx.appcompat.app.ActionBarDrawerToggle']
3035

3136
SensorsAnalyticsTransformHelper(SensorsAnalyticsExtension extension) {
3237
this.extension = extension
@@ -73,6 +78,12 @@ class SensorsAnalyticsTransformHelper {
7378
classNameAnalytics.isShouldModify = true
7479
}
7580
} else if (!classNameAnalytics.isAndroidGenerated()) {
81+
for (pkgName in special) {
82+
if (className.startsWith(pkgName)) {
83+
classNameAnalytics.isShouldModify = true
84+
return classNameAnalytics
85+
}
86+
}
7687
if (extension.useInclude) {
7788
for (pkgName in include) {
7889
if (className.startsWith(pkgName)) {

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class SensorsAnalyticsUtil {
2323
public static final ASM_VERSION = Opcodes.ASM6
2424
private static final HashSet<String> targetFragmentClass = new HashSet()
2525
private static final HashSet<String> targetMenuMethodDesc = new HashSet()
26+
private static final HashSet<String> specialClass = new HashSet()
2627

2728
static {
2829
/**
@@ -52,6 +53,11 @@ class SensorsAnalyticsUtil {
5253
targetFragmentClass.add('androidx/fragment/app/Fragment')
5354
targetFragmentClass.add('androidx/fragment/app/ListFragment')
5455
targetFragmentClass.add('androidx/fragment/app/DialogFragment')
56+
57+
for (className in SensorsAnalyticsTransformHelper.special) {
58+
specialClass.add(className.replace('.', '/'))
59+
}
60+
5561
}
5662

5763
static boolean isPublic(int access) {
@@ -69,4 +75,8 @@ class SensorsAnalyticsUtil {
6975
static boolean isInstanceOfFragment(String superName) {
7076
return targetFragmentClass.contains(superName)
7177
}
78+
79+
static boolean isTargetClassInSpecial(String className) {
80+
return specialClass.contains(className)
81+
}
7282
}

0 commit comments

Comments
 (0)