Skip to content

Commit 789152a

Browse files
author
weiqiangliu
committed
Release 3.6.2
1 parent 70e82dc commit 789152a

8 files changed

Lines changed: 51 additions & 31 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
# SDK 简介
88

9-
SensorsAnalytics SDK 是国内第一家开源商用版用户行为采集 SDK,目前支持代码埋点、全埋点、App 点击图、可视化全埋点等。目前已累计有 1500 多家付费客户,2500+ 的 App 集成使用,作为 App 数据采集利器,致力于帮助客户挖掘更多的商业价值,为其精准运营和业务支撑提供了可靠的数据来源。其采集全面而灵活、性能良好,并一直保持稳定的迭代,经受住了时间和客户的考验。
9+
神策数据官方 Java 埋点 SDK,是一款轻量级用于 Java 端的数据采集埋点 SDK
1010

1111
# 使用说明
1212

SensorsAnalyticsSDK/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<groupId>com.sensorsdata.analytics.javasdk</groupId>
1616
<name>SensorsAnalyticsSDK</name>
1717
<artifactId>SensorsAnalyticsSDK</artifactId>
18-
<version>3.6.1</version>
18+
<version>3.6.2</version>
1919
<description>The official Java SDK of Sensors Analytics</description>
2020
<url>http://sensorsdata.cn</url>
2121

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/ISensorsAnalytics.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ public interface ISensorsAnalytics {
6262
*/
6363
void clearSuperProperties();
6464

65+
/**
66+
* 全局接口;是否开启 $lib_detail 收集调用者信息,默认开启;在完成初始化之后,调用一次进行关闭
67+
*
68+
* @param enableCollectLibDetail -true:开启收集调用者信息;false 关闭收集信息,置为常量
69+
*/
70+
void setGlobalEnableCollectMethodStack(boolean enableCollectLibDetail);
71+
6572
/**
6673
* 记录事件
6774
*

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsAnalytics.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ void clearSuperProper() {
7777
log.info("Call clearSuperProperties method.");
7878
}
7979

80+
@Override
81+
public void setGlobalEnableCollectMethodStack(boolean enableCollectLibDetail) {
82+
worker.setEnableCollectMethodStack(enableCollectLibDetail);
83+
}
84+
8085
public SensorsAnalytics(final Consumer consumer) {
8186
clearSuperProper();
8287
worker = new SensorsAnalyticsWorker(consumer);

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsAnalyticsWorker.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package com.sensorsdata.analytics.javasdk;
22

3+
import static com.sensorsdata.analytics.javasdk.SensorsConst.DEFAULT_LIB_DETAIL;
4+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB;
5+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_DETAIL_SYSTEM_ATTR;
6+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_METHOD_SYSTEM_ATTR;
7+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_SYSTEM_ATTR;
8+
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_VERSION_SYSTEM_ATTR;
9+
import static com.sensorsdata.analytics.javasdk.SensorsConst.SDK_VERSION;
310
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_ACTION_TYPE;
411
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_SIGN_UP_ACTION_TYPE;
512

@@ -8,6 +15,7 @@
815
import lombok.NonNull;
916
import lombok.extern.slf4j.Slf4j;
1017

18+
import java.util.HashMap;
1119
import java.util.Map;
1220

1321
@Slf4j
@@ -17,6 +25,8 @@ class SensorsAnalyticsWorker {
1725

1826
private boolean timeFree = false;
1927

28+
private boolean enableCollectMethodStack = true;
29+
2030
public SensorsAnalyticsWorker(Consumer consumer) {
2131
this.consumer = consumer;
2232
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@@ -30,6 +40,7 @@ public void run() {
3040

3141
void doAddData(@NonNull SensorsData sensorsData) {
3242
Map<String, Object> data = SensorsData.generateData(sensorsData);
43+
data.put("lib", generateLibInfo());
3344
if (timeFree && (TRACK_ACTION_TYPE.equals(sensorsData.getType()))
3445
|| TRACK_SIGN_UP_ACTION_TYPE.equals(sensorsData.getType())) {
3546
data.put("time_free", true);
@@ -48,6 +59,7 @@ void shutdown() {
4859

4960
public void doSchemaData(@NonNull SensorsSchemaData schemaData) {
5061
Map<String, Object> sensorsData = schemaData.generateData();
62+
sensorsData.put("lib", generateLibInfo());
5163
if (timeFree && (TRACK_ACTION_TYPE.equals(schemaData.getType()))
5264
|| TRACK_SIGN_UP_ACTION_TYPE.equals(schemaData.getType())) {
5365
sensorsData.put("time_free", true);
@@ -58,4 +70,27 @@ public void doSchemaData(@NonNull SensorsSchemaData schemaData) {
5870
public void setEnableTimeFree(boolean enableTimeFree) {
5971
this.timeFree = enableTimeFree;
6072
}
73+
74+
public void setEnableCollectMethodStack(boolean enableCollectMethodStack) {
75+
this.enableCollectMethodStack = enableCollectMethodStack;
76+
}
77+
78+
public Map<String, String> generateLibInfo() {
79+
Map<String, String> libProperties = new HashMap<>();
80+
libProperties.put(LIB_SYSTEM_ATTR, LIB);
81+
libProperties.put(LIB_VERSION_SYSTEM_ATTR, SDK_VERSION);
82+
libProperties.put(LIB_METHOD_SYSTEM_ATTR, "code");
83+
if (enableCollectMethodStack) {
84+
StackTraceElement[] trace = (new Exception()).getStackTrace();
85+
if (trace.length > 3) {
86+
StackTraceElement traceElement = trace[3];
87+
libProperties.put(LIB_DETAIL_SYSTEM_ATTR,
88+
String.format("%s##%s##%s##%s", traceElement.getClassName(), traceElement.getMethodName(),
89+
traceElement.getFileName(), traceElement.getLineNumber()));
90+
}
91+
} else {
92+
libProperties.put(LIB_DETAIL_SYSTEM_ATTR, DEFAULT_LIB_DETAIL);
93+
}
94+
return libProperties;
95+
}
6196
}

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsConst.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ private SensorsConst() {
1515
/**
1616
* 当前JDK版本号,注意要和pom文件里面的version保持一致
1717
*/
18-
public static final String SDK_VERSION = "3.6.1";
18+
public static final String SDK_VERSION = "3.6.2";
1919
/**
2020
* 当前语言类型
2121
*/
@@ -82,4 +82,5 @@ private SensorsConst() {
8282
public static final String SIGN_UP_SYSTEM_ATTR = "$SignUp";
8383
public static final String TIME_FREE_ATTR = "$time_free";
8484

85+
public static final String DEFAULT_LIB_DETAIL="JavaSDK##generateLibInfo";
8586
}

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/SensorsData.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.sensorsdata.analytics.javasdk.bean.IDMUserRecord;
99
import com.sensorsdata.analytics.javasdk.bean.ItemRecord;
1010
import com.sensorsdata.analytics.javasdk.bean.UserRecord;
11-
import com.sensorsdata.analytics.javasdk.util.SensorsAnalyticsUtil;
1211

1312
import lombok.Getter;
1413
import lombok.Setter;
@@ -147,7 +146,6 @@ protected SensorsData(String distinctId, String originalId, Map<String, String>
147146
this.identities = identities;
148147
this.type = type;
149148
this.event = event;
150-
this.lib = SensorsAnalyticsUtil.generateLibInfo();
151149
this.time = properties.containsKey(SensorsConst.TIME_SYSTEM_ATTR) ?
152150
(Date) properties.remove(SensorsConst.TIME_SYSTEM_ATTR) : new Date();
153151
this.properties = properties;
@@ -182,9 +180,6 @@ protected static Map<String, Object> generateData(SensorsData sensorsData) {
182180
if (sensorsData.getEvent() != null) {
183181
eventMap.put("event", sensorsData.getEvent());
184182
}
185-
if (sensorsData.getLib() != null) {
186-
eventMap.put("lib", sensorsData.getLib());
187-
}
188183
// fix 【SDK-4709】time 类型保持为时间戳类型
189184
eventMap.put("time", sensorsData.getTime().getTime());
190185
if (sensorsData.getProject() != null) {

SensorsAnalyticsSDK/src/main/java/com/sensorsdata/analytics/javasdk/util/SensorsAnalyticsUtil.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,12 @@
33
import static com.sensorsdata.analytics.javasdk.SensorsConst.BIND_ID_ACTION_TYPE;
44
import static com.sensorsdata.analytics.javasdk.SensorsConst.ITEM_DELETE_ACTION_TYPE;
55
import static com.sensorsdata.analytics.javasdk.SensorsConst.ITEM_SET_ACTION_TYPE;
6-
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB;
7-
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_DETAIL_SYSTEM_ATTR;
8-
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_METHOD_SYSTEM_ATTR;
9-
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_SYSTEM_ATTR;
10-
import static com.sensorsdata.analytics.javasdk.SensorsConst.LIB_VERSION_SYSTEM_ATTR;
116
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_APPEND_ACTION_TYPE;
127
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_DELETE_ACTION_TYPE;
138
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_INCREMENT_ACTION_TYPE;
149
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_SET_ACTION_TYPE;
1510
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_SET_ONCE_ACTION_TYPE;
1611
import static com.sensorsdata.analytics.javasdk.SensorsConst.PROFILE_UNSET_ACTION_TYPE;
17-
import static com.sensorsdata.analytics.javasdk.SensorsConst.SDK_VERSION;
1812
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_ACTION_TYPE;
1913
import static com.sensorsdata.analytics.javasdk.SensorsConst.TRACK_SIGN_UP_ACTION_TYPE;
2014
import static com.sensorsdata.analytics.javasdk.SensorsConst.UNBIND_ID_ACTION_TYPE;
@@ -321,26 +315,9 @@ public static void assertFailedData(FailedData failedData) throws InvalidArgumen
321315
if (!dataMap.containsKey("time")) {
322316
dataMap.put("time", System.currentTimeMillis());
323317
}
324-
//重置 lib,后台获取该数据时能根据 $lib_method 区分通过重发送接口上报到服务端
325-
dataMap.put("lib", generateLibInfo());
326318
}
327319
}
328320

329-
public static Map<String, String> generateLibInfo() {
330-
Map<String, String> libProperties = new HashMap<>();
331-
libProperties.put(LIB_SYSTEM_ATTR, LIB);
332-
libProperties.put(LIB_VERSION_SYSTEM_ATTR, SDK_VERSION);
333-
libProperties.put(LIB_METHOD_SYSTEM_ATTR, "code");
334-
StackTraceElement[] trace = (new Exception()).getStackTrace();
335-
if (trace.length > 3) {
336-
StackTraceElement traceElement = trace[3];
337-
libProperties.put(LIB_DETAIL_SYSTEM_ATTR,
338-
String.format("%s##%s##%s##%s", traceElement.getClassName(), traceElement.getMethodName(),
339-
traceElement.getFileName(), traceElement.getLineNumber()));
340-
}
341-
return libProperties;
342-
}
343-
344321
public static List<Map<String, Object>> deepCopy(List<Map<String, Object>> source) {
345322
if (source == null) {
346323
return null;

0 commit comments

Comments
 (0)