Facebook 開源其調試平台 Sonar,支持 Android 與 iOS
歡迎下載開源中國APP獲取更多優質文章
Facebook 在其官網宣布,正式開源其內部用於移動應用調試的平台 Sonar。
項目地址:https://github.com/facebook/Sonar
Sonar 是一個用於調試 iOS 和 Android 移動應用的平台,通過一個簡單的界面,開發者可以可視化地審查和控制其 APP,除了可以直接使用,Sonar 還支持使用插件 API 進行擴展。三年前 Facebook 已經開源過一款基於 Chrome 開發者工具的 Android 調試橋 Stetho,此次發布的 Sonar 比之更加先進,主要體現在跨平台、更豐富的用戶體驗,以及最主要的可擴展性,官方建議開發者使用 Sonar 替代 Stetho。
Facebook 介紹,Sonar 已經被使用於內部許多項目中,其中的一些使用樣例包括:
- 通過顯示 Litho 和 ComponentKit 組件,使工程師能夠更精確地訪問他們正在使用的功能的視圖結構。
- 處理 GraphQL 請求,而不是原始網路事件。
- 實時跟蹤性能指標,使開發人員能夠更輕鬆地查找性能問題。
Sonar 由兩部分組成:桌面客戶端和移動 SDK。 Sonar 使用者與桌面客戶端進行交互,而移動 SDK 則安裝在工程師想要調試的 Android 或 iOS 應用程序中,之後將數據傳輸到 Sonar 桌面客戶端。桌面客戶端基於 Electron 和 Facebook 的開源項目,包括 React.js、Flow、Metro、RSocket 和 Yarn;移動 SDK 也大量使用 Facebook 的開源項目,如 Folly 和 RSocket。
Sonar 將可擴展性作為設計重點,為此 Facebook 的工程師已經為其構建了各種各樣的插件,並隨著 Sonar 的發布,將其中一部分開源。Sonar 官方表示,因為從一開始就與 Facebook 內部的框架和產品開發人員密切合作,所以可以保證其提供的插件 API 足夠強大,而實際上 Sonar 中包含的所有工具都是插件,Sonar 的核心只提供一組 UI 組件並管理設備之間的連接,這意味著任何人都可以構建強大的插件工具。此次發布的版本中,無論應用使用標準 Android/iOS 視圖還是 Litho/ComponentKit 組件構建,Sonar 與相應插件都能夠使開發者審查其層次結構,同時也可以讓開發者審查來自應用的網路流量和系統日誌。
通過插件擴展 Sonar,開發者需要編寫了一個桌面客戶端插件來渲染 UI,並且需要編寫一個移動 SDK 插件來暴露數據。對於桌面客戶端插件,開發者只需要創建一個繼承客戶端插件基類的 React 組件,該組件負責與移動 SDK 插件進行通信並將其提供的數據進行渲染,同時桌面客戶端插件也能夠將命令發送回移動 SDK 插件。移動 SDK 插件由其運行所在平台的原生語言開發,包括 iOS 上的 Swift/Objective-C 和 Android 上的 Java/Kotlin。它需要註冊一組 handler 並為其定義 response,這類似於開發者通常構建的處理客戶端請求的伺服器應用。
藉助這種雙向套接字連接和基於 React 的用戶界面,Sonar 已經能夠為開發者創建各種各樣的工具,下圖是一個示例。圖中顯示了應用程序層次結構檢查器(layout inspector)的運行情況,屬性檢查器顯示在右側,可以不經過重新編譯而實時編輯視圖屬性以快速測試不同的設計和配置。層次結構檢查器本身是可擴展的,Litho 團隊已經使用它為 Sonar 中的 Litho 組件帶來相同的實時更新功能。
OSC開源社區頭條號,每日推送最新優質的技術類文章,包括外文翻譯,軟體更新,技術博客等。歡迎關注osc開源社區頭條號,點擊「了解更多」,獲取Facebook Sonar 的詳細介紹與下載地址。
※TIOBE 6月編程語言榜:TypeScript首次躋身前100!C語言指數暴漲
TAG:OSC開源社區 |