首页 帮助中心 听云App 常见问题

常见问题

1、应用启动数据未采集或缺失生命周期方法。

1.若AndroidMainfest.xml文件中注册了自定义的MyBaseActivity,请删除它,或对其配置过滤嵌码。需要在tingyun.properties文件中添加以下内容:
#等号“=”后替换为需要过滤听云嵌码的类的路径,如有多个路径,使用英文逗号隔开
noInstrumentedClasses=com/nbs/ui/base/MyBaseActivity
2.应用需实现自定义的Application类
3.ant或eclipse编译,需在tingyun.properties文件中配置以下内容:
#等号“=”后替换为Application的类的路径
applicationName=com/nbs/app/MyApp

2、用户操作数据采集少。

听云SDK编译时对点击事件(如onClick、onItemClick、ItemSelected、PageSelected等方法)嵌码,仅支持点击数据采集,暂不支持触摸、滑动等操作。

3、未采集到崩溃或采集的崩溃数量偏少。

1.听云SDK自2.11.1版本开始支持Native Crash异常采集,之前版本仅采集Java Crash。
2.听云SDK初始化前的崩溃无法采集。
3.检查报表的崩溃采集开关是否开启。
4.若应用中存在应用自身异常捕获或第三方崩溃采集逻辑,需放在听云SDK之前初始化。

4、TCP、首包数据为0。

1.听云SDK需在应用自身网络请求发起之前初始化
2.暂不支持安卓9.0TCP数据采集。
3.使用Http代理时无法获取TCP数据。
4.WebView跨域资源响应头未配置Timing-Allow-Origin: *

5、WebView数据未采集或只采集到了网络错误、HTTP错误。

1.未在WebChromeClient的onProgressChanged方法中调用NBSWebChromeClient.initJSMonitor(view, newProgress);
2.不支持SPA单页面应用数据采集。
3.不支持使用loadDataWithBaseURL加载html代码的数据采集。

6、URL过滤、错误过滤未生效。

检查报表上配置是否正确,可以通过在线正则工具检查,需注意报表配置正则的前后需要加斜杠“/”。

7、如项目使用MultiDex分包,安卓5.0以下设备可能会出现java.lang.NoClassDefFoundError异常。

需将报错的类分配至主dex中,可参考Google提供的解决方案https://developer.android.com/studio/build/multidex.html?hl=zh-cn

8、Sophix补丁工具生成补丁失败。

听云SDK为了采集应用启动数据,会在编译时对Application类的attachBaseContext()及onCreate()方法嵌码。而阿里Hotfix补丁工具自3.2.1版本开始,要求在initialize之前,不能调用非Android官方API类,导致生成补丁失败。

【解决方案】

为了通过补丁工具的检查,听云不能在编译时Application类嵌码。可以在听云tingyun.properties配置文件中对Application类过滤。这样会影响听云采集应用启动数据,故需要对Application类手动嵌码。

  • 若项目中使用了SophixStubApplication类,请按以下方法配置。

1、在tingyun.properties配置文件(没有则新建,在项目根目录和主module下各一份)中,配置对Application类过滤嵌码:

noInstrumentedClasses=com/nbs/app/SophixStubApplication

25
2、在项目的RealApplication类的attachBaseContext()及onCreate()方法的首行、末行中分别添加以下代码:

NBSAppInstrumentation.attachBaseContextBeginIns(base);
NBSAppInstrumentation.attachBaseContextEndIns();
NBSAppInstrumentation.applicationCreateBeginIns();
NBSAppInstrumentation.applicationCreateEndIns();

示例如下:

26

  • 若项目中未使用SophixStubApplication类,请按以下方法配置。

1、在tingyun.properties文件(没有则新建,在项目根目录和主module下各一份)中,配置对Application类过滤嵌码,其中“#=”后为清单文件中配置的application类的全路径:

noInstrumentedClasses=com/nbs/app/MyApp

27

2、Sophix需在attachBaseContext()方法中初始化,Sophix初始化后,调用以下代码:

NBSAppInstrumentation.attachBaseContextBeginIns(base);
NBSAppInstrumentation.attachBaseContextEndIns();

在Application的onCreate()方法的首行、末行分别调用以下方法:

NBSAppInstrumentation.applicationCreateBeginIns();
NBSAppInstrumentation.applicationCreateEndIns();

示例如下:

28

【参考资料】

Hotfix补丁工具报错排查步骤请参见阿里云的介绍:

https://help.aliyun.com/knowledge_detail/59422.html?spm=a2c4g.11186623.4.3.NocMNz

9、编译时出现java.util.zip.ZipEexeption异常。

SDK jar包重复引用,检查libs目录及build.gradle文件,确保只有一份nbs.newlens.agent.jar引用。

10、项目使用Lambda时编译失败。

将听云插件放在lambda后面
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'newlens'

11、SDK编译耗时问题。

听云SDK的原理是字节码插桩(使用Transform API),在一定程度上会影响项目的编译耗时。我们提供了一个在开发期间听云SDK不参与编译的配置。若您的项目较大,在集成听云SDK后感觉到明显的编译时间增长,可按以下方法配置:
(1)	打开app目录下的build.gradle文件
(2)	添加以下内容
newlensExt {
    	   newlensEnabled = false
//设为flase时不对项目嵌码,提交测试及上线前需设置为true
}