-
Notifications
You must be signed in to change notification settings - Fork 28
插桩类插件(例如GrowingIO、听云oneapm)的兼容操作及可能造成的问题
在YouzanBrowser中,为了处理状态同步、资源加速等问题,重写了WebView、WebViewClient、WebChromeClient的一些方法。
而GrowingIO、听云oneapm、博睿数据(https://www.bonree.com/)等插件为了能够自动收集页面数据也可能改写相关方法,由此可能造成不兼容的问题。
我们尽量分析了GrowingIO、听云oneapm等库,包括其不同版本的改写方式,做了兼容实现。所以一般情况下,用户不会遇到此类问题,但不排除有未尽情况,或者此类三方库后续版本变化又未实时发现的情况。
因此,以下做一些说明:
1、(注意:该条说明已经不适用于GrowingIO的Android 1.1.9,因为GrowingIO已经屏蔽了YouZanBrowser。所以也不会有兼容问题,但是GrowingIO也不能采集YouZanBrowser的数据了)GrowingIO会自己生成一个WebChromeClient将用户自己设置的WebChromeClient包装起来,具体调用方式:
VdsAgent.setWebChromeClient((WebView)this, paramContext); // paramContext 是用户定义的WebChromeClient
目前未发现GrowingIO改写出现问题的情况,可以正常使用。
2、听云oneapm的改写要粗糙得多,如果重写了setWebViewClient方式,它会在最后一句加上它自己的调用:
Callback.setWebViewClient(this, paramWebViewClient);
这里就有可能造成死循环了, AppSDK中已经处理这种情况,可能正常使用。
但是在听云5.1.0.0版本中发现了以下改写:
也就是说听云拦截了html的请求,采用URLConnection自己去请求后端,返回内容。在有赞的页面中,需要根据UA处理相应逻辑、返回正确页面。而听云的改写是完全没有考虑设置UA、Cookie等情况,故不能使用。
3、编译问题 若在接入到主工程发生了编译问题, 例如下图 原因: 由于插桩导致编译期代码发生变化导致编译失败 解决方案:
- 查阅插件对应的文档
- 咨询插件方的技术支持