先介紹以下ios裝置與mac之間的通訊協議,雖然ios裝置是通過usb線連線到mac機器上,但實際上mac與ios裝置並不是直接通過usb協議進行通訊的。
具體協議如下:
macos上有乙個名為usbmuxd的服務,即usb multiplexing daemon的英文縮寫,作用是在usb協議上實現多路tcp連線。
itunes和xcode這些工具本身並不直接與裝置通訊,而是連線到本地的socket檔案/var/run/usbmuxd上,然後通過usbmuxd服務把請求翻譯成usb協議傳送給裝置,裝置端也有usbmuxd服務,會把usb協議翻譯回tcp協議,然後轉給ios裝置端的具體服務。
1.只要實現usbmuxd,無需macos系統也能實現與裝置的通訊。
2.**usbmuxd的tcp協議,可以實現不同機器之間的裝置連線。
socat是乙個linux下的乙個工具,其功能類似於加強版的netcat,能實現埠、socket、檔案等之間的**操作。在這裡我們用這個工具實現本地socket與埠之間的**。
macos下使用brew install socat即可安裝。
linux環境下各大主流系統的軟體包管理也均可直接安裝。
根據上述協議,我們可以在usbmuxd服務的流程中做一些手腳,通過「欺騙「本地的xcode來實現讓xcode誤認為本地存在裝置的假象。
解決方案
根據上述協議,我們可以在usbmuxd服務的流程中做一些手腳,通過「欺騙「本地的xcode來實現讓xcode誤認為本地存在裝置的假象。
如上圖所示,通過修改本地機器的/var/run/usbmuxd,將其連線到遠端機器的埠上,在遠端機器上將該埠的連線**到實際連線著ios裝置的/var/run/usbmuxd上,最終達到本地/var/run/usbmuxd連線到遠端ios裝置的效果。
遠端機器在整個環節中只需要**usbmuxd服務,所以相對於使用較為昂貴的mac裝置,實際部署時可以使用普通pc甚至樹莓派來代替,只需要在其上安裝並啟動usbmuxd服務,並保證本地機器與遠端機器在網路路由上可以連線。
socat命令如下:
本地機器:
1.mv /var/run/usbmuxd /var/run/usbmuxx
2.socat unix-listen:/var/run/usbmuxd,mode=777,reuseaddr,fork tcp:***.***.***.***:8555
遠端機器:
1.socat tcp-listen:8555,reuseaddr,fork unix-connect:/var/run/usbmuxd
連線完畢後,遠端機器上所有裝置都能類似與直接接在本地機器上一樣直接使用。
測試開發探秘
不知道從什麼時候開始,出現了測試開發工程師這個稱呼,以前的測試是測試工程師,開發是開發工程師,可究竟什麼時候出現的測試開發工程師呢?怎麼才算得上是測試開發工程師呢?其實雖然我做測試開發,高階測試開發,以及資深測試開發很久了,但是不能給出乙個準確的定義。但是從以往的工作,招聘面試等經驗中,可以分析一下...
入行測試開發
02資料庫測試需要掌握哪些技能 直播 資料庫測試需要掌握哪些技能 11月5日 20 00 21 00 03 玩轉介面自動化測試 直播 玩轉介面自動化測試 11月6日 20 00 21 00 04 玩轉web自動化測試 直播 資料庫測試需要掌握哪些技能 11月7日 20 00 21 00 05 玩轉壓...
測試開發之路
前言 其實這篇文章的內容是想跟我帶過的2個徒弟說的,只是直到離職我們都沒有推心置腹的聊一次。我們似乎一直沒辦法面對面的坦誠說出自己心裡的想法。也許我做的不夠好,沒能贏得他們的信任。很遺憾你們走了 是的,很遺憾最終你們決定離開了這家公司。我很惋惜,你們都是我面試過的,面試的評價都很高。面試完老大問我你...