iOS開發的另類神器:libimobiledevice開源包

轉載 望山觀海

簡介

libimobiledevice又稱libiphone,是一個開源包,可以讓Linux支持連接iPhone/iPod Touch等iOS設備。由于蘋果官方并不支持Linux系統,但是Linux上的高手絕對不能忍受因為要連接iOS設備就換用操作系統這個事兒。因此就有人逆向出iOS設備與Windows/Mac Host接口的通訊協議,最終成就了橫跨三大桌面平臺的非官方版本USB接口library。經常用Linux系統的人一定對libimobiledevice不陌生,但是許多Windows和Mac用戶也許就不知道了。事實上,它同iTools一樣,都是可以替代iTunes,進行iOS設備管理的工具。因為源碼是開放的,可以自行編譯,所以對很多開發者而言可以說更為實用。

官方github地址:https://github.com/libimobiledevice/libimobiledevice

最后還有一點,作為一個前Android開發,習慣使用adb命令各種調試,轉了iOS怎么能沒有這種工具,而去使用iTunes和iTools呢?對此零容忍!

快速直接安裝libmobiledevice的方法

  • 在MacOS下安裝可以使用brew,類似Ubuntu中的apt-get
sudo brew update
sudo brew install libimobiledevice
#libimobiledevice中并不包含ipa的安裝命令,所以還需要安裝
sudo brew install ideviceinstaller

  • Ubuntu下安裝需要添加一個新的軟件庫,里面包含了libimobiledevice
sudo add-apt-repository ppa:pmcenery/ppa
sudo apt-get update
apt-get install libimobiledevice-utils
sudo apt-get install ideviceinstaller

常用功能

  1. 安裝ipa包,卸載應用
//命令安裝一個ipa文件到手機上,如果是企業簽名的,非越獄機器也可以直接安裝了。
ideviceinstaller -i xxx.ipa

//命令卸載應用,需要知道此應用的bundleID
ideviceinstaller -U [bundleID]

  1. 查看系統日志
idevicesyslog

  1. 查看當前已連接的設備的UUID
idevice_id --list

  1. 截圖
idevicescreenshot

  1. 查看設備信息
ideviceinfo

  1. 獲取設備時間
idevicedate

  1. 設置代理(也好像是端口轉發的工具,具體能利用它干啥還沒試過)
iproxy

  1. 掛載DeveloperDiskImage,用于調試
ideviceimagemounter

  1. 獲取設備名稱
idevicename

  1. 調試程序(需要預先掛載DeveloperImage)
idevicedebug

  1. 查看和操作設備的描述文件
ideviceprovision list

ideviceinstaller安裝ipa報錯(已經支持iOS12)

錯誤1

"Could not connect to lockdownd. Exiting."

出現這個問題一般是因為新版操作系統的通信協議可能有些微調,參考下面的stackoverflow的帖子,可以通過下面的命令嘗試更新使用最新的libimobiledevice構建版本。

http://stackoverflow.com/questions/39035415/ideviceinstaller-fails-with-could-not-connect-to-lockdownd-exiting

The best solution here is to get the latest libimobiledevice, which has a fix for this particular issue:

brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew link --overwrite libimobiledevice
brew install ideviceinstaller
brew link --overwrite ideviceinstaller

錯誤2,進行上面步驟時出現

A recent change to libimobiledevice bumped the constraint on libusbmuxd to >= version 1.1.0. The current usbmuxd homebrew package is version 1.0.10.
As a result, homebrew --HEAD installs of libimobiledevice no longer build without a --HEAD install of usbmuxd.

從意思上看,應該是其中用到的usbmuxd庫更新了,我們系統中的不夠新。那咱們就給他升級一下唄:

brew update
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew link --overwrite usbmuxd

更新了usbmuxd庫之后,可以重復錯誤1中的解決辦法,重新安裝libmobiledevice即可正常使用。

掛載文件系統工具:ifuse

  • ifuse是一個依賴libimobiledevice庫的工具,所以必須首先安裝libimobiledevice

  • 首先去 https://osxfuse.github.io/ 下載fuse for macos的庫。

  • 然后github上clone下載ifuse最新源碼到本地(自己決定放哪):

//cd 到要安裝的目標路徑,然后:

git clone https://github.com/libimobiledevice/ifuse.git

  • 進入clone好的目錄,執行:
//將源碼在本機編譯:

./autogen.sh
./configure
make

//執行腳本ifuse到系統終端(其實也可以不用,直接去src中運行也可以)
sudo make install

  • 掛載媒體文件目錄:
//注意,此處的掛載點必須要真實存在,需要預先創建好目錄,否則掛載失敗

ifuse [掛載點]

  • 掛載某應用的documents目錄
ifuse --documents [要掛載的應用的bundleID] [掛載點]

//注意,iOS 8.3之后要求應用的UIFileSharingEnabled權限要開啟,否則可能沒有權限訪問,會有如下的錯誤提示

ERROR: InstallationLookupFailed
The App 'com.wsgh.test' is either not present on the device, or the 'UIFileSharingEnabled' key is not set in its Info.plist. Starting with iOS 8.3 this key is mandatory to allow access to an app's Documents folder.

  • 掛載某應用的整個沙盒目錄
ifuse --container [要掛載的應用的bundleID] [掛載點]

  • 獲取bundleID
ideviceinstaller -l

  • 卸載掛載點
fusermount -u [掛載點]

  • 如果是越獄的設備,并且配置好了,可以使用下面命令掛載整個iphone文件系統(暫時沒試過,還沒有開始研究越獄設備)
ifuse --root [掛載點]

  • 詳細說明,可以進入ifuse的github主頁查看原版文檔
https://github.com/libimobiledevice/ifuse
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372