<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              【全球新要聞】使用adb操作android手機的idb工具有哪些?詳情介紹

              來源:CSDN 時間:2023-02-23 07:43:47

              騰訊云技術社區-掘金主頁持續為大家呈現云計算技術文章,歡迎大家關注!


              (資料圖片僅供參考)

              導讀

              對于android的開發以及測試人員,對adb命令一定會很熟悉,adb工具可謂android測試的入門神器,安裝、卸載、抓log、截圖等等一應俱全。很多自動化以及性能工具都一定程度上要依賴adb工具。

              剛開始接觸iOS時,一直希望iOS有一套類似adb工具的東西,結果都被告知要用itools、ituns類的圖形化界面工具。后來經過研究,要在iOS上實現一套類adb工具理論上是沒有問題,有很多開源庫可以使用,所以就做了一套idb出來(目前適用于windows平臺),作為iOS的測試的基礎工具,主要實現了兩個功能。

              1、讓用戶可以使用idb對iOS手機進行基礎的操作,就如同使用adb操作android手機;

              2、封裝好了一鍵抓取網絡包(生成pcap文件)以及log的方式,提高相應的效率。

              完整idb工具下載地址(僅供交流學習):share.weiyun.com/f28c0e8f6fb… 。

              原理

              iTunes是如何連接手機的?

              第一步:首先通過usbmux技術,和手機建立連接。usbmux是一種可以通過usb管道(也就是一個usb端口)建立多路復用連接的系統。這是一個類TCP系統,通過這種系統,主機的端口號可以和手機中的特定端口號建立連接并通信。

              第二步:連接手機的lockdown服務,對應的端口號為62708,然后通過和lockdown服務傳輸數據,實現相應的功能。這個服務通常只能通過usb端口建立相應的tcp連接(也就是第一步說的usbmux系統)。Lockdown服務可以用來做很多事情,安裝應用、查看文件、重啟等等。

              通信協議從低到高如下:

              1、USB協議:通過usb端口傳輸多個連接的數據,類似于網絡中的數據鏈路層;

              2、usbmuxd協議:打開設備上TCP端口連接,類型于網絡中的運輸層;

              3、lockdownd協議:用于和lockdown服務傳輸數據,類似于網絡中的應用層。

              idb原理介紹

              了解到iTunes的原理后,很多人便開始自己開發一些庫,實現一樣的功能,最有名的就是libimobiledevice是基于C語言實現的,編譯配置比較麻煩,學習成本也較高。后來也出了對應的python庫,即pymobiledevice。idb就是基于這個python庫實現的。

              idb架構設計上分為5層:

              1、usbmux層:usb驅動層;

              2、PlistService層:連接建立層,調用usbmux層,完成連接的建立,示例代碼如下:

              self.s = mux.connect(dev, 62708);

              3、Locdown封裝層:封裝好基本的lockdwon服務,并完成和手機的配對驗證;

              4、功能實現層:通過lockdown實現對應的功能,核心示例代碼如下:

              實現安裝功能self.lockdown.startService("com.apple.mobile.installation_proxy")

              實現文件相關功能self.lockdown.startService("com.apple.mobile.house_arrest")

              5、命令行工具封裝層:工具的初衷是為了開發一套類似android的adb的工具,這一層主要仿照adb,實現對應命令行參數的解析并調用功能實現層,完成對應的功能。

              遇到的問題及解決方案

              工具交互方式的選擇以及如何實現?

              1、模仿adb的交互方式:adb的便利性以及高效已經得到了大家的廣泛認可,所以idb的用法要和adb保持一致,做到在命令行中直接輸入idb+對應的命令即可實現對應的功能;

              2、具體的實現:工具使用的是python語言開發實現的,而python的運行方式最常見的是 python+腳本文件名,要做到在命令行中直接輸入idb實現對應腳本python腳本的運行并實現參數的傳遞;

              最初想到的方案:將python打包成可執行的exe文件,這個操作比較重,而且之后改起來又比較麻煩,同時也不符合python腳本語言的特性,最終拋棄了這種方案。

              最終方案:簡潔的bat封裝(bat是windows自帶的批處理語言)。

              A、新建一個idb.bat文件,將idb.bat文件所在目錄加入Path環境變量后,命令行中輸入idb,即可運行對應的idb.bat文件;

              B、Python腳本路徑設置:最終需要調用相應的python腳本實現相應的功能,為了保證在任意目錄下,都能正常運行。

              在idb.bat中設置對應python腳本的絕對路徑:目前python腳本和bat腳本在同一個目錄下,所以可以用“%~dp0%mypy%”來表示python腳本的絕對路徑,“mypy”變量代表對應的python腳本的名稱。

              C、Bat到python的參數傳遞:bat腳本中可以用“%*”表示在命令行中收到的參數,可以用這種方式傳遞參數給python。

              具體的實現如下:

              復雜功能的封裝

              在iOS日常測試過程中,會有一些抓包、抓log的需求,這些在android測試中也比較麻煩,所以在idb開發過程中,希望能夠將抓網絡包、抓log操作盡最大可能簡化。

              1、交互設計:一條命令開始抓取、Ctrl+C結束、當前目錄生成pcap文件以及log文件 。

              2、具體實現:

              A、命令封裝:idb pcap。

              B、網絡包和log的抓取實現通用的封裝:核心實現start和stop兩個函數。

              start:啟動工作線程實現對應的功能,并在工作線程中時刻檢測對應的標志位,看是否要結束;

              stop:修改標志位為結束,觸發工作線程的停止;處理并存儲生成的文件。

              C、入口函數對Ctrl+C的捕獲:當運行python程序時,使用鍵盤輸入Ctrl+C,python程序內部會拋出一個KeyboardInterrupt異常,我們可以通過捕獲對應的異常實現相應的功能。

              D、為了方便查看,對應的文件統一以當前的時間命令,并存在在命令行所在的路徑。

              核心代碼實現:

              工具介紹

              下載地址(僅供交流學習):share.weiyun.com/f28c0e8f6fb… 。

              目錄結構:

              下載對應的zip包,然后解壓。

              “.”開頭的是eclipse工程文件,不用管(可以直接作為pydev工程導入eclipse,僅供交流學習)。

              “idb.py”實現idb所有功能的腳本。

              “idb.bat”入口函數,方便在命令行中直接通過“idb”命令調用相應功能。

              “pymobiledevice_sheldonfan”調用的類庫,所有需要的python庫都已經放在里面了。

              主要功能:

              1、支持手機基本操作:重啟、鎖屏、休眠;

              2、支持應用的安裝、卸載、查看;

              3、支持沙盒目錄的查看以及基本的文件操作(iOS10之后出現限制,暫無法完美支持);

              4、支持log、網絡pcap包的一鍵抓取。

              環境依賴

              1、安裝python2.7(32位版),并設置環境變量。設置方法如下:

              依次打開:計算機——》右鍵——》屬性——》左上角"高級系統設置"——》右下角“環境變量”——》系統變量——》選中“Path”——》點擊“編輯”——》將python的目錄加進去用";"分割,其他不要變——》點擊確定。

              Python目錄指的是python的安裝目錄,默認安裝在C:\Python27目錄下。Python目錄需要包含python的可執行文件,如下圖:

              2、Windows 7,安裝iPhone驅動(檢驗標準,各種iPhone手機助手能夠識別并連接手機);

              3、下載完后可以將目錄添加到PC的環境變量中,方便在任何地方調用。

              用法詳解

              如果已經添加了環境變量,直接打開cmd即可。

              1.重啟手機:輸入命令 idb reboot。

              后面輸入的是調用python腳本時打印出來的內容。

              2、關機:idb shutdown。

              3、讓手機休眠:idb sleep //這個命令會讓手機進入深度睡眠,usb連接也會斷掉;按電源鍵點亮屏幕,又會正常連接 。

              4.安裝app(ipa文件):idb install “ipa文件路徑”。

              5、卸載app:idb uninstall “app的id”(類似于android中的包名)。

              6、顯示所有的APP:idb listapps //默認顯示所有的APP。

              7、顯示用戶安裝的APP:idb listapps user。

              8、顯示系統自帶的APP:idb listapps sys。

              9、查看系統級文件列表:idb shell //ios使用沙盒環境,默認進入的是系統的圖片、書籍音樂,也只能顯示這些文件:

              進入后支持簡單的ls、cd、pwd等命令。進入后可以使用exit命令退出。

              10、獲取系統文件到本機:idb pull 手機目錄 pc目錄手機目錄可以通過idb shell命令來查看(就是上一條命令)。

              示例:idb pull /DCIM .

              將手機中的DCIM目錄抓到當前目錄(當前目錄用“.”表示)。

              可以pull單個文件,也可以pull整個目錄。

              11、push文件到系統目錄idb push “pc文件路徑”“手機目錄”。

              手機目錄也是通過idb shell來確定的(push圖片后,手機無法識別,后續會繼續優化)。12、獲取APP沙盒中的文件:idb -p “應用id” pull “ 手機目錄”“pc目錄”。

              示例如下:

              idb -p com.tencent.mlife.dailybuild pull Documents .將應用id為com.tencent.mlife.dailybuild 的應用的Documents 目錄,拉到當前目錄(用“.”表示)

              13、push文件到app沙盒中:idb -p “應用id” push“pc文件路徑”“手機目錄”。

              14、idb logcat 抓系統日志,也可以通過idb logcat >mylog.txt重定向到文件。

              15、idb screenshot 截圖,這個需要手機裝了開發者功能,如果沒裝的話,可以考慮在手機上按電源鍵以及home鍵,然后pull到電腦上。

              16、idb pcap抓包,開始抓包,按Ctrl+C結束,會在當前的cmd所在的目錄生成對應的pcap文件以及log文件。

              按Ctrl+C結束抓取,提示總流量并在當前目錄生成pcap文件以及日志文件(系統日志)。

              注意事項

              1、驅動一定要先裝好,如果電腦識別不了手機,所有的命令都無法執行;

              2、有時候連接不上手機,可能是驅動加載問題,可以嘗試啟動itunes重新安裝驅動、重啟電腦、重啟手機;

              3、部分APP的沙盒環境是不能訪問的,這個和APP設置有關。一般日常測試的APP(非正式發布的)都允許訪問沙盒目錄,方便獲取相應的文件。但是iOS10增加了對沙盒目錄的限制,無法完美支持;

              4、目前支持python2.7 32位版,其他版本暫時無法支持(因為有些引用類庫的限制)。

              想知道更多測試相關干貨 請關注我們的微信公眾號——騰訊移動品質中心TMQ:

              【有獎討論】程序員,怎么應對三十歲? 點擊查看詳情

              相關閱讀Web 性能壓測工具 ApacheBench(ab)使用總結手機發燙是為何—— App 電量測試定位方法iOS 程序從開發完到上 AppStore 那點事兒

              此文已由作者授權騰訊云技術社區發布,轉載請注明文章出處原文鏈接:cloud.tencent.com/community/a…獲取更多騰訊海量技術實踐干貨,歡迎大家前往騰訊云技術社區

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩