Skip to content

插桩类插件(例如GrowingIO、听云oneapm)的兼容操作及可能造成的问题

pepperer edited this page Aug 7, 2023 · 3 revisions

在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、编译问题 若在接入到主工程发生了编译问题, 例如下图 原因: 由于插桩导致编译期代码发生变化导致编译失败 解决方案:

  • 查阅插件对应的文档
  • 咨询插件方的技术支持