Android WebView与H5联调技巧 - xing_star

xing-star 2021-08-01 原文


Android WebView与H5联调技巧

版权声明:本文为xing_star原创文章,转载请注明出处!

本文同步自http://javaexception.com/archives/78

背景:

突然想写一篇关于Android WebView与H5联调技巧的文章,在这块内容也算是小有心得。平时在工作中,发现不少同事,对这块很迷糊,在联调过程中出现了问题,不知道究竟是哪一端的问题,究竟是h5造成的,还是Android造成的,分析不出原因,真是不好说啥,本着对自我有着较高的要求,那么就Android,H5一起搞定吧。

在此之前可以看一篇文章,配置好调试所需要的基础环境。这篇文章写的不错,可以参考 利用 Chrome 开发者工具远程调试 Android 中的原生 WebView

心得技巧:

开启WebView的debug模式后,Android设备连接USB,打开chrome浏览器,输入chrome:inspect,然后手机App打开对应的h5页面,在Chrome里面就能看到这个网页了,下面就是调试的步骤。

在Chrome:inspect页面,点击打开手机h5对应的url,会看到Chrome里面开始加载相关资源,比如css文件,js文件等等。当然了我们可以点击Chrome上的刷新按钮,这样会重新加载一次当前的h5页面。这个时候可以清晰的看到加载资源的过程。相关的css,js,html的页面都可以在Chrome浏览器上看到,这些页面的源代码也能看到。这才是我们该关注的。

从这一步开始,我们可以从程序执行的先后顺序调试,一开始加载h5页面肯定是在Android这边的代码,断点可以打在Android里面相关调用的地方,比如webView.loadUrl()这块代码附近,还有注入js的逻辑等等,Android跟h5交互都是有桥接的,这款也可以加上断点,这个需要结合自己使用的是哪种jsbridge或者说是Interface这样的方式等等。

常见出现问题的是注入js有问题,相关的js方法并没有注入成功。这一步可以在断点打在h5页面上查看,这里需要仔细梳理下h5的初始化逻辑,看看h5是如何对这些原生方法进行包装的,初始化的判断逻辑是啥,有时候真的需要仔细,header,userAgent等等都可能导致问题,还有就是查看类似window.jsbridge对象的内部方法声明,有时候方法不生效,可能是参数不对,这都有可能。

通常我们看到某个js文件某行代码报红,就意味着这行出现问题,问题可能就在这,产生的原因,需要看上面相关的代码。出现js错误后,下面的js代码就不会在执行了。当然了我们也可以手动修改js文件的代码,这是可以的,扯远一点,这种就可以做最简单的作弊,黑产等等。

碰到这种联调问题,需要仔细分析上下文条件,从程序执行顺序的第一步开始打断点,分析,同时观察对应变量的值,有时候需要h5断点,Android代码都打开着,会来回切换,总之顺着程序执行顺序流的角度来分析,最终肯定可以定位出问题所在。实力打脸甩锅的同事。。

当然了有时候也需要h5同事的配合,比如有js代码压缩,用的是vue.js之类的,可以让对应的同事配合下,关掉代码压缩,方便联调。

参考资料:

http://yifeng.studio/2017/04/29/debug-android-webview-with-chrome-dev-tools/

发表于
2019-05-03 07:16 
xing_star 
阅读(2658
评论(0
编辑 
收藏 
举报

 

版权声明:本文为xing-star原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xing-star/archive/2019/05/03/10804224.html

Android WebView与H5联调技巧 - xing_star的更多相关文章

  1. 深圳租房完全攻略 – wqj1212

    深圳租房完全攻略 (一)深圳出租房源的种类。  1、花园房:主要是高档的小区房,通常都是装修豪华,家具家电一应 […]...

  2. ColyseusJS 轻量级多人游戏服务器开发框架 – 中文手册(系统保障篇)

    快速上手多人游戏服务器开发。后续会基于 Google Agones,更新相关 K8S 运维、大规模快速扩展专用 […]...

  3. 分布式文件系统:原理、问题与方法 – YoungerChina

    分布式文件系统:原理、问题与方法        本地文件系统如ext3,reiserfs等(这里不讨论基于内存 […]...

  4. 外挂基础知识入门 – 四海骄阳

    外挂基础知识入门 爱用C++的用C++,爱用delphi用delphi,爱用易语言的用易语言…想怎 […]...

  5. Artistdirect.com为Zune播放器提供的热门歌曲MP3 – 电脑人生

    Artistdirect.com为Zune播放器提供的热门歌曲MP3 2007-01-21 22:37  电脑 […]...

  6. 一个经历,实习?兼职? – Ron Ngai

    一个经历,实习?兼职? //在“XX公司”的四月份 入职 假如没有记错的话,第一天入职“XX公司”是3月19日 […]...

  7. CAD插入图片命令 – 梦想CAD控件

    CAD插入图片命令 1.单击菜单栏,“绘图”->“插入图片”。 2.单击绘图工具栏”插入图片命令”按钮。 […]...

  8. 两年Java的面试经验 – 有酒有故事

    两年Java的面试经验 一:面试中的问题 java集合框架: 1:介绍一下java的集合框架 2:HashMa […]...

随机推荐

  1. Scratch2.0例—接苹果

    Scratch2.0例—接苹果 【教学目标】   1、 学习例子,能用和构造条件 ,并把此条件插入到 中;能理 […]...

  2. 面向对象(OO)第二阶段学习总结

    0.前言 此阶段总共进行三次大作业,其中第一次作业中的第一题,水文数据校验及处理中,遇到较大的难题,第一次接触 […]...

  3. 如何使用远程桌面登入远程服务器 – 潇湘剑雨

    如何使用远程桌面登入远程服务器      (1)点击左下角开始-运行,然后输入mstsc           […]...

  4. c/c++排坑(5) — c语言中的申明

    C语言的申明总是令人头大,对于这块内容也一直让我头疼。希望通过这篇博客能够稍微梳理一下。材料和例子来源于《C专 […]...

  5. 原生js写简单轮播图方式1-从左向右滑动

    轮播图就是让图片每隔几秒自动滑动,达到图片轮流播放的效果。轮播图从效果来说有滑动式的也有渐入式的,滑动式的轮播 […]...

  6. Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、dhroid..

    Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFr […]...

  7. 廉价的SUP掌机拆解 – Milton

    廉价的SUP掌机拆解 最近经常出现的一款山寨sup掌机, 75元包邮入手, 全套配件如下.    看看正面和背 […]...

  8. 关于Delaunay Triangulation以及泰森多边形 – 畅游九州

    关于Delaunay Triangulation以及泰森多边形 首先来一段简单的介绍: 在空间分析中经常使用算 […]...

展开目录

目录导航