ca..原來 stf 還可以這麼玩...
上班摸魚逛論壇時, 無意中看到一個叫剛上線不久的, 叫巖鼠的雲測平臺的內側宣傳, 上去註冊了個新號後, 居然送了120分鐘免費雲真機使用時間, 真厚道, 作為一個混跡於各個平臺的資深雲真機使用者, 並且自己也在負責公司內部同型別的的雲測平臺, 自身對stf也比較熟悉, 於是很好奇地去深入挖掘了一些裡面的技術細節, 發現該平臺十分牛逼.
第一感覺
第一眼看下去, 非常清爽, 使用起來非常流暢, 進入真機幾乎是秒開, 操作響應也非常及時, 而且右邊的選單區域還有不少他們擴充套件的功能, 他們家的iPhone使用起來還比較流暢, 總體使用起來, 感覺非常棒.
從技術的角度看看, 首先可以看出他們應該是基於openstf的
從訊息的命名和前端的幾個websocket連線, 看起來也是基於openstf去做的, 但可以看出他們在openstf的基礎上做了很多擴充套件和優化.
例如這個stf後端與前端通訊的主要的websocket:
wss://yanshu.effirst.com/socket.io/?EIO=3&transport=websocket
裡面有十分多他們自己擴充套件的資訊, 例如 webdebug.enable logcat.irmaStartSer 等.. 似乎都是對應雲真機裡面他們擴充套件的web除錯 和 日誌的功能的.
而且touch的訊息也是與openstf一模一樣, 可以斷定, 他們也是基於openstf或者使用了openstf裡面的minitouch.
另一個傳輸手機螢幕的websocket, 更驚喜了..
他們的螢幕資料傳輸量非常小...
對比我們自己的, 簡直是差距太大了啊...
從devtools下面的16進位制資料可以看出, 資料中都是0 0 0 1開頭, 應該是使用了H264或者H265, 對比我們公司內部雲測平臺使用openstf的原生的方案, 資料量實在相差很大.
當前我們內部的雲測平臺, 手機螢幕的傳輸, 現在遇到的瓶頸主要有2個, 幀率和頻寬. 我司的渣渣WIFI, 絕大部分情況下最大的下載速度, 也就只有2.5MB/s左右, 即使我們調低了minicap輸出的圖片質量, 在我們可以接受的畫質下, 最終輸出的圖片質量一張也50KB左右, 如果到達30幀時, 就已經吃掉了我們的電腦一大半的頻寬了, 再連個adb除錯, 也比較吃力, 另外我們有一些國產機型, minicap的幀率最高只有不到16幀, 日常用起來體驗還是能感覺到卡.
看到巖鼠的方案, 應該是和https://github.com/Genymobile/scrcpy的方案一樣, 直接通過反射呼叫安卓的SurfaceControl私有API, 把螢幕傳給MediaCodec, 由系統去做錄屏, 最終編碼成H264, 通過websocket傳送給前端的video做展示. 使用這樣的方式, 在畫面快速變化時, 基本都可以達到60幀, 並且流量能通過編碼器的位元速率控制, 由於視訊的壓縮方式優勢, 視訊流能極大的減少了頻寬, 並且提供高達60幀, 也不用考慮頻寬過大的問題. 這塊對於我們優化minicap的方案, 提供了一個新的思路.
我也要把這個方案搬到我司的內部雲測平臺上~~~
非常方便的Web除錯
另外很吸引的我功能就是除錯的tab裡面的內容, 細玩了一下, 居然能直接在在右邊區域, 除錯手機裡面的網頁... 這波操作非常6, 對於前端開發者來說, 非常方便.
更神奇的是, 居然iOS也能直接在網頁通過devtools除錯...而且體驗還不差, safari該有的功能他也有.
平時我們除錯iOS的網頁, 都需要把手機插到自己mac, 使用mac的safari才能調. 至於他怎麼做, 我不熟悉iOS, 還真不知道了...
這個web除錯功能, 我絕對服氣, 市面上還沒看到有競品可以做到.
先說這麼多了, 下次再深挖一些巖鼠裡面的一些更深入的技術細節, 我也要去規劃一下我司內部的雲測平臺的優化計劃.
相關文章
- 分散式事務,原來可以這麼玩?分散式
- 原來vue的slot可以這麼玩轉Vue
- 新手如何入門linux,linux原來還可以這麼學Linux
- 實戰技巧,Vue原來還可以這樣寫Vue
- 原來還可以這麼切換到正常編輯器的模式模式
- 一次打包引發的思考,原來maven還能這麼玩?Maven
- Java原來還可以這麼學:如何搞定面試中必考的集合類Java面試
- 原來git還可以起死回生!Git
- java列舉原來還能這麼用Java
- 酒店營銷人必看!簡訊營銷還可以這麼玩!
- 用PPT做的微信紅包封面還可以這麼玩?
- Dapper原來還可以直接這樣寫SQL,很強大哦APPSQL
- 提高職場效率,原來可以這麼簡單
- OKR這麼好用,竟然還可以用它來擇偶?!OKR
- iOS 通知還能這麼玩?iOS
- 漫畫通訊:驚呆了,手機登入還可以這麼玩!
- 雙十二來了,你的表格可以這樣玩!這個工具還能提升Excel的效能Excel
- WiFi 網路也可以這麼玩WiFi
- 原來 Element 的元件原始碼還能這麼看元件原始碼
- HTAP 還可以這麼玩?丨TiDB 在 IoT 智慧園區的應用TiDB
- vue.js除了動態路由,前端許可權還可以這麼玩Vue.js路由前端
- 郵件告警還能這麼玩?!
- Java“微服務”還能這麼玩!Java微服務
- 【Spring】原來SpringBoot是這樣玩的Spring Boot
- 我真是服了!AS Debug還能這麼玩?
- 誰動了我的 Linux?原來 history 可以這麼強大!Linux
- 原來word中還有這些小技巧!
- 從純愛到NTR,《同級生》裡的“為愛鼓掌”還可以這麼玩
- 還可以這麼玩?超實用 Typescript 內建型別與自定義型別TypeScript型別
- 原來AI離我這麼這麼這麼這麼近!AI
- 用 Java 訓練深度學習模型,原來可以這麼簡單!Java深度學習模型
- 特效材質還可以這樣玩!?3D畫素教程特效3D
- 好你個C語言,原來還有這麼多副面孔!C語言
- 原來我也可以這麼優秀(一)一個簡單的極限測試(還在修訂中)
- [譯] CSS border-radius 還可以這麼用?CSS
- 世界盃法國奪冠 華帝真的全額退款了 營銷還可以這麼玩!
- postMessage 還能這樣玩
- 疫情期間,跨國案件原來還可以“雲”處理