Weex Inspector 初探(一)

前言

最近開始研究大名鼎鼎的weex,一個能講三端統一的框架,用前端技術寫代碼,抹平平臺間的差異性。確實是不錯的技術方向。不過Flutter 感覺應該更厲害些,不過還是要寫這個,一個是績效目標,另一個也是自己對這個方面比較感興趣。

技術棧

debug的過程

上面的流程圖大概能看到三部分組成:

  • 客戶端 Devtools 客戶端作為aar被集成App中, 它通過webscoket連接到調試服務器,此處并未做安全檢查. 出于安全機制及包大小考慮, 強烈建議接入方只在debug版本中打包此aar.

  • 服務器 Devtools 服務器端是信息交換的中樞, 既連接客戶端, 又連接Chrome, 大多數情況下扮演一個消息轉發服務器和Runtime Manager的角色.

  • Web端 Chrome的V8引擎扮演著bundle javascript runtime的角色. 開啟debug模式后, 所有的bundle js 代碼都在該引擎上運行. 另一方面我們也復用了Chrome前端的調試界面, 例如設置斷點, 查看調用棧等, 調試頁關閉則runtime將會被清理.

其中的 Debug Server 的實現 是 weex-toolkit

App Debug部分的實現分為Android端和IOS端,Android 端的具體實現weex-devtools-android
主要的邏輯包括:

  1. hook weex-sdk 中 callNative 和 callJs 方法,以及頁面創建和刷新邏輯。js framework初始化到native代碼調用再到js代碼執行的全過程。
  2. 實現 Chrome Debugging Protocol
  3. 使用okhttp websocket 進行交互,采用json格式進行應答。

大致結構

Android 端

inspector包

inspector 大致分為幾個部分:

1. common 部分保存了一些工具類。
2. debug 部分主要是websocket邏輯,負責weex-toolkit服務器和natvie部分的數據請求和應答。
3. inspector 包含了元素信息,chrome debug 協議信息,截屏邏輯。
4. json 包含 json序列化和反序列化 工具。
5. 
protocol

weex-devtools

weex toolkit

weelk toolkit 服務器端是信息交換的中樞, 既連接客戶端, 又連接Chrome。
使用nodejs 搭建了一個局域網的服務器。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,237評論 25 708
  • 中秋月圓月明,心情沒啥不同。 只因身處盛世,想吃想喝現成! 中秋節,沒有像書上寫的那種“海上生明月,天涯共此時...
    快樂的櫻子閱讀 423評論 1 4
  • 姓名:關按芬 企業名稱:深圳市慧友冠源科技有限公司。 組別:272期樂觀四組 【日精進打卡68天】 【知~學習】 ...
    江陽水閱讀 166評論 0 0
  • “我兒子怎么樣了?你哭什么哭,你說話啊。”一個看起來五十多歲的中年人急匆匆地沖了上來,一手扯住了三人中的一...
    借我扁舟一葉閱讀 554評論 0 0
  • 一、新建SSH密鑰 右鍵選擇“Git Bash Here” ssh-keygen -t rsa -C"用自己...
    小斌_bingor閱讀 8,341評論 0 1