天天看點

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真機雲測平台,支援遠端真機測試,遠端無線調試,也可以解決多機器的相容性問題

繼續閱讀