版权声明:本文为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/

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

  1. android webview处理h5打开本地文件浏览器的功能

    这周遇到一个比较棘手的问题,需要在android上边集成h5页面,并且在h5页面上,需要用户能够上传android本地的照片,一开始我以为webview会自动处理掉的,因此没太留意,当真正集成时,才发 ...

  2. Android WebView 支持H5的定位Js

    //启用数据库 webSettings.setDatabaseEnabled(true); String dir = this.getApplicationContext().getDir(" ...

  3. android:如何通过chrome远程调试APP中的webView的h5代码

    今天出现一个问题,在老板的Mate9 Pro上,我们APP的所有H5页面都是一片空白,但是在其他手机上都是好的,那么我们就怀疑是h5报错了,但是到底是什么错,无法得知,所以就想要可以像在pc的chro ...

  4. Android WebView 超大字号适配问题

    目前在使用 Android WebView 展示H5页面的时候,存在当系统字号设置超大的时候,出现页面内容展示不全的问题. 此问题是因为Android WebView 默认使用系统字号进行展示. 解决 ...

  5. Android WebView 不支持 H5 input type="file" 解决方法

    最近因为赶项目进度,因此将本来要用原生控件实现的界面,自己做了H5并嵌入webview中.发现点击H5中 标签 不能打开android资源管理器. 通过网络搜索发现是因为 android webvie ...

  6. Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。

    当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID:  大概就是点击H5界面跳转到Androi ...

  7. Android中WebView与H5的交互,Native与JS方法互调

    项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...

  8. Atitit.android webview h5运行环境总结

    Atitit.android webview h5运行环境总结 1. WebView 的使用1 2. Js调用java1 3. Js调用java 跟个swt的比较2 3.1. Swt是BrowserF ...

  9. Android WebView 基本设置与H5 交互

    mWebView.setDrawingCacheEnabled(true); WebChromeClient webChromeClient = new WebChromeClient(); mWeb ...

随机推荐

  1. linux中RabbitMQ安装教程

    linux中RabbitMQ安装教程 在做一个微服务项目时候用到消息队列,于是深入了解了消息队列知识,并在linux上安装了Rabbitmq,本博客介绍Rabbitmq的安装教程,想要深入了解消息队列 ...

  2. Proxmox VE虚拟化管理平台-相关概念

    请阅读此文用户务必阅读以下链接,其中包含了汉化作者.张自然copy过来的原因等信息. www.zhangziran.com/proxmox-docs-zh-cn.htm a Proxmox VE 集群 ...

  3. 【Vuejs】335-(超全) Vue 项目性能优化实践指南

    点击上方"前端自习课"关注,学习起来~ 前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 D ...

  4. redis(3)--redis原理分析

    过期时间设置 在Redis中提供了Expire命令设置一个键的过期时间,到期以后Redis会自动删除它.这个在我们实际使用过程中用得非常多.EXPIRE命令的使用方法为EXPIRE key secon ...

  5. 服务网格数据平面的关键:层层剖析Envoy配置

    Envoy是一种高性能C++分布式代理,专为单个服务和应用程序设计.作为Service Mesh中的重要组件,充分理解其配置就显得尤为重要.本文列出了使用Envoy而不用其他代理的原因.并给出了Env ...

  6. 从零开始—Socket系统调用和多态封装

    1 重新搭建实验环境 前面都是用实验楼环境做的实验,偷的懒总是要还的,这一次重装环境前后花了十几个小时,踩了无数的坑. 1.1 Ubuntu和LINUX内核的区别 Ubuntu是基于LINUX内核编写 ...

  7. Internet History,Technology,and Security -Technology: Application Protocols(Week7)

    Week7 Technology: Application Protocols This week, we’ll be covering application protocols. With rel ...

  8. 从AlexNet(2012)开始

    目录 写在前面 网络结构 创新点 其他有意思的点 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 本文重点在于回顾深度神经网络在CV领域的First Blood--A ...

  9. 【GZOI 2019】特技飞行

    Problem Description 公元 \(9012\) 年,Z 市的航空基地计划举行一场特技飞行表演.表演的场地可以看作一个二维平面直角坐标系,其中横坐标代表着水平位置,纵坐标代表着飞行高度. ...

  10. JavaScript图形实例:四瓣花型图案

    设有坐标计算公式如下: X=L*(1+SIN(4α))*COS(α) Y=L*(1+SIN(4α))*SIN(α) 用循环依次取α值为0~2π,计算出X和Y,在canvas画布中对坐标位置(X,Y)描 ...