热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RemoteDebugging之放开那个webview让我来调戏(试)

(此段可以略过)随着H5的发展,在安卓开发中逐渐影响了我们原来的一些开发模式。例如现在在原生中有很多活动页和一些需要经常变化的页都是用嵌在webview里的模式。而这个时候更必不可少

(此段可以略过)
随着H5的发展,在安卓开发中逐渐影响了我们原来的一些开发模式。
例如现在在原生中有很多活动页和一些需要经常变化的页都是用嵌在webview里的模式。
而这个时候更必不可少的会遇到的问题就是,安卓与js相互调用的问题。
今天就给大家讲一下,通过调试webview来解决js相互调用出现的问题。

(—-正题开始—)
本来有一个项目A,现在要在项目B里面把A的一部分功能分离出来作为一个单独的APP。
于是乎就开启了我们最喜欢的,复制粘贴模式!
这里写图片描述

可是正当我沉浸在复制粘贴模式的时候,突然发了一个问题。
在webview基类里有一个调用相册的方法怎么弄都不会被js调起,一行一行的对照了A项目的代码(正常,且同一个界面同一个类同一个url),都是一样的,可是在B项目里就不行。

然后我就想了下是不是传递出去的链接不同,后台对链接加了判断。

于是我把A项目的链接直接copy到B项目里,结果还是不行,但是同样的webview基类和同样的url,在A项目就可以,然后我就想啊想,想啊想就是想不到原因- -WT安福?

这里写图片描述

实在是没有解决的思路,想的我都开始怀疑人生了,我从哪里来,要往哪里去······
这里写图片描述

算了,去找找写js的人吧- -可是心里又在想,怎么说呢,跟人家说同一个url,俩个项目一个可以一个不可以,给看看?- -但是自己这边实在没思路还是硬着头皮去了。
结果:不出所料被嘲讽了一波后说:这块是之前别人写的,我这忙你先自己看看………这里写图片描述
不知道大家有没有遇到过这种情况- -当时就想的,哎要是自己也会前端(H5云云~)就好了可以自己调试了。
!!!等等,什么?调试?对了,能不能自己调试webviwe 啊(以前都是js相互调用就ok了,还真没遇到过调试webviwe这种需求- -)
随手打开了我的大Google,随便一搜,不负众望,果然大Google已经为我们想到了会有这个需求。
dong!dong!dong!dong!接下来我们的主角要登场了:
这里写图片描述

接下来我们要讲讲怎么使用它了,Remote Debugging 大哥骑着Chrome看起来很吊的样子,可是使用起来却很简单。

使用步骤
O:调试WebView需要满足安卓系统版本为Android 4.4+已上。并且需要再你的APP内配置相应的代码,在WebView类中调用,如下:
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {

WebView.setWebContentsDebuggingEnabled(true);

}

一:USB调试打开
二:在电脑上打开Chrome浏览器的菜单– 更多工具 – 检查设备(Chromemenu > More tools > Inspect Devices),或者直接在浏览器地址栏输入chrome://inspect 或者about:inspect

三:找到需要调试的目标页面(在手机打开对应的webview页面后即可看到如下:)打开后DevTools后,确保打钩选中Discover USB devices

这里写图片描述

四:点击inspect即可打开DevTools如下图(示例):

这里写图片描述

如图:
1.先找到需要调试的功能区域。
2.找到对应的前端代码模块,此处是图2位置的div。
3.点击图2后会出现,图2处的div对应的最右侧相关信息,其中有个click点击信息。
4。打开lick后面,再锁定div模块,然后会出现div模块对应的js代码,此时,用鼠标点击即可调到该处。

然后进入到下图此模块的核心js代码:
这里写图片描述

此时我们可以看到最上面的是init初始化方法,init方法下面才是拍照方法。
通过点击左侧数字加入断点调试我们会发现,程序执行到init方法里面的initShare方法报错了。
这是因为这个方法是A项目中的分享组件里面的方法。可是B是精简版项目没有这个方法。
所以走到init方法里面的initShare方法的时候抛出了错误程序没有往下执行,导致我们点击拍照按钮无法调起APP里面的拍照方法。

这真是前端写的一个大坑,各个方法直接不是并列的而是耦合在一起,没有就报错…非空等判断都没有加入。

无力吐槽这代码逻辑…(Remote Debugging的使用比较强大就不在这里太具体说了,写不下…具体大家可以搜索一下。)

然后顺利的给了一个空的share()后它,init()方法不报错了,然后下面的拍照方法也能在拍照点击时正常响应了,一切调用都正常了。。。不说了,别拦我!那个前端你过来一下!!!

这里写图片描述

不得不感谢Remote Debugging哥,有了他,妈妈再也不怕我写的webview有问题了,只要有问题就让他调戏(试)一下webvie妹子就能知道到底是我惹webview妹子生气了,具体哪里惹的,或者是那个小三(前端- -)惹的。

注意事项
1.此工具第一次使用需要翻墙(不然会导致打开工具白屏)
2.主机尽量和移动设备处在同一网段的局域网内

·在这里友情感谢妈蛋表情网和有心课堂的大力支持。


推荐阅读
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 万事开头难,凡事都有套路,勇敢迈出第一步就成功一大半了。本节将带领初学者们迈出属于自己的一小步。本书的开发工具采用AndroidStudio࿰ ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • This feature automatically validates new regions using the AWS SDK, ensuring compatibility and accuracy. ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 题目描述:给定一个区间,支持两种操作:1. 将位置a的值修改为b;2. 查询区间[a, b]内的子序列的最大和,其中子序列中相邻的元素必须具有不同的奇偶性。 ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
author-avatar
男孩形式恋人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有