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

原文鏈接:https://www.jianshu.com/p/6423610d3293

簡介

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
# 高版本brew會警告,不允許使用sudo執行brew,有風險。

brew update
brew install libimobiledevice

# libimobiledevice中並不包含ipa的安裝命令,所以還需要安裝
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即可正常使用。

錯誤3,可能會提示你需要配置github的accessToken,按照提示操作即可

錯誤4,可能會提示man手冊目錄的權限問題,按照提示操作即可

掛載文件系統工具: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章