mPaas里使用H5无线调试

一 背景

目前主流的H5调试还都是通过手机插线链接电脑进行调试,以Android为例,通过USB链接电脑,然后通过chrome://inspect/#devices实现手机的远程调试。但是存在一些问题,主要体现在

1:便利性:设备需要安装ADB相关调试环境,需要一定的Android开发背景

2:可用性:Chrome调试经常需要*更新,不然打开白屏

3:稳定性:USB链接容易断,稳定性差

4:不支持无线:通过USB的方式,需要连线,不能远程调试

这里我介绍下一些常用的无线调试技术方案 。

二 无线调试技术

1. vorlon(面向开发)

Vorlon是微软出品的一个开源的、可扩展的、平台无关的JavaScript远程调试工具。采用Node.js和socket.io技术。使用它,我们可以通过浏览器远程inspect、debug、test任何设备上的js代码。官网:链接,github:链接

首先,我们需要通过npm安装Vorlon的服务端控制程序。

npm i -g vorlon

安装成功之后,通过一个简单的命令即可启动Vorlon服务。

vorlon

启动成功后,如果是在本机打开的服务,则在浏览器端打开 http://localhost:1337 即可看到Vorlon的控制面板。

这个时候,只需要待调试页面端引用下面的脚步,就可以实现调试,

效果如下:

mPaas里使用H5无线调试

2. Eruda(面向测试)

Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools 的迷你版,其主要功能包括:捕获 console 日志、检查元素状态、捕获XHR请求、显示本地存储和 Cookie 信息等。地址:链接

主要面向测试同学进行日常测试问题反馈。


引用方式:

 

eruda.init();

   mPaas里使用H5无线调试

三 volor的高级用法

1. 功能

1.1 console: 查看console日志, 执行js

mPaas里使用H5无线调试

1.2 modernizr: 查看当前支持的和不支持的一些api特性

mPaas里使用H5无线调试


1.3 DOM Explorer: dom树查看和修改

mPaas里使用H5无线调试

1.4 Object Explorer:展示当前的js对象树

mPaas里使用H5无线调试


1.5 Best Practices: web开发的一些建议

mPaas里使用H5无线调试

1.6 Network Monitor:网络监控

mPaas里使用H5无线调试


1.7 Resources Explorer: storage和cookie查看

mPaas里使用H5无线调试


1.8 Device Information:设备信息查看

mPaas里使用H5无线调试


四 mPaas注入js脚步的能力

mPaas的H5容器提供了注入H5页面js标签的能力,支持多维度正则条件匹配注入js脚步。

1. 原理

1.1 注入时机:

以Android为例,是在webview回调onReceivedTitle和onPageFinished时候,执行脚步注入


1.2 注入代码:

String js = "var script,head=document.head||document.documentElement;script=document.createElement(\"script\");" +

                "script.async=true;script.charset=\"UTF-8\";" +

                "script.src=\"" + dynamicScript + "\";" +

                getCrossOrigin(dynamicScript) +

                "head.insertBefore(script,head.firstChild);";

mPaas里使用H5无线调试


2. 注入的其他场景

  1. 通用能力辅助:比如分享的页面分享文案抓取js脚步
  2. 全局埋点:记录所有页面通用埋点
  3. 安全管控:重写某些危险api,解决安全漏洞


3. 使用方法

开关:h5_dsRules

配置格式:支持配置多条,以url为key,配置内容为正则匹配。


Android

在 Android 工程的 assets/config 路径下,创建 custom_config.json 文件,并在文件内填入以下内容

mPaas里使用H5无线调试


[
  {
    "value": "[{\"http://30.89.185.180:1337/vorlon.js\":[{\"appId\":\".*\"}]}]",
    "key": "h5_dsRules"
  }
]


iOS

// DTFrameworkInterface 增加协议声明
@interface DTFrameworkInterface ()
@end
// DTFrameworkInterface 中重写 nebulaCustomConfig
- (NSDictionary *)nebulaCustomConfig
{
// 
return @{@"h5_dsRules":@"[{\"http://30.89.185.180:1337/vorlon.js\":[{\"appId\":\".*\"}]}]"};
}
// 在 - (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中调用。
// 启用配置
[MPNebulaAdapterInterface shareInstance].configDelegate = self;


五 mPaas真机云测

同时mPaas真机云测平台,支持远程真机测试,远程无线调试,也可以解决多机器的兼容性问题



上一篇:【观点】在苹果公司学到的编程技巧


下一篇:Java核心技术卷I基础知识1.2.3 分布式