
什么是IDB
iOS Debug Bridge - iOS調(diào)試橋、安卓有一個(gè)很出名ADB(安卓調(diào)試橋)它可以很方便的利用PC對(duì)移動(dòng)設(shè)備的連接調(diào)試、包括獲取設(shè)備詳情、安裝|卸載apk、重啟、監(jiān)控設(shè)備信息、同時(shí)給可以進(jìn)行app開(kāi)啟、觸發(fā)點(diǎn)擊、滑動(dòng)、放大等手勢(shì)事件、它可以用來(lái)做app的自動(dòng)化測(cè)試和手機(jī)群控!
由于iOS系統(tǒng)的封閉性、一直沒(méi)有像ADB這么強(qiáng)大、這么實(shí)用的工具、好在Facebook出了這個(gè)IDB工具、讓我們iOS設(shè)備可以像安卓那樣靈活的調(diào)試控制!
雖然libimobiledevice這個(gè)工具也可以進(jìn)行iOS設(shè)備的連接啟動(dòng)、軟件安裝|卸載、監(jiān)控等但是它不如Facebook的idb功能豐富與便利!
安裝idb
1.idb-companio安裝
建議brew方式安裝
brew tap Facebook/fb
brew install idb-companion
idb客戶端安裝
建議python3.6以上
pip3 install fb-idb
以上兩步安裝完畢之后就可以使用idb了!
idb使用
idb —help
可以查看該工具的所有功能
idb常用指令
查看當(dāng)前pc上的所有移動(dòng)設(shè)備包括模擬器信息
idb list-targets
啟動(dòng)一臺(tái)設(shè)備
idb boot UDID
打開(kāi)謀app
idb launch com.apple.Maps
點(diǎn)擊屏幕
idb ui button tap x y
很多指令可以根據(jù)自己的需要來(lái)配套隨用!
idb_companion
這idb_companion是一個(gè)gRPC在 macOS 上運(yùn)行的 Objective-C++ 服務(wù)器。它與用于自動(dòng)化模擬器和設(shè)備的本機(jī) API 對(duì)話。它鏈接FBSimulatorControl和FBDeviceControl框架,它們是整個(gè)idb項(xiàng)目的一部分。
當(dāng)它idb_companion充當(dāng)gRPC服務(wù)器時(shí),它會(huì)為單個(gè)iOS 目標(biāo)(設(shè)備或模擬器)執(zhí)行此操作。
此外,idb_companion還有一些命令是在 python CLI 中故意不可用的,這些操作與 iOS 設(shè)備管理或模擬器生命周期的操作有關(guān)。

也就是說(shuō)它可以通過(guò)host:port方式遠(yuǎn)程控制設(shè)備!這個(gè)很強(qiáng)大!
idb用途
- 自動(dòng)化測(cè)試
- iOS手機(jī)群控
- 其他我暫時(shí)想不到還可以用來(lái)干嘛…..
個(gè)人感覺(jué)用它來(lái)做自動(dòng)化測(cè)試的話不是很方便、自動(dòng)化測(cè)試?yán)肁ppium的WDA、結(jié)合其封裝的python客戶端可以更高效的編寫(xiě)自動(dòng)化測(cè)試流程、因?yàn)樗峁┓浅6嗟脑夭檎曳绞健ap、swipe、scroll等事件很方便很好用!
**備注:idb ui 指令只能針對(duì)模擬器,真機(jī)由于ios限制是無(wú)法使用的?。?!需要結(jié)合fbsimctl才行
issue上作者有回應(yīng):
https://github.com/facebook/idb/issues/551
https://github.com/facebook/idb/issues/566
**
idb list-targets
//獲取設(shè)備信息
idb describe --udid xxxx
//啟動(dòng)未開(kāi)啟的模擬器(真機(jī)無(wú)效)
Idb boot xxxxxx
idb list-apps --udid xxxxxxxx
idb launch --udid xxxxxxxxx com.apple.Maps
Idb terminate --udid xxxxxxxx com.apple.Maps
idb screenshot --udid xxxxxxx /Users/mac/Desktop/autoTest/aa.png
idb uninstall --udid xxxxxxxxx com.monkey.test.SDKTest