被低估的 Libimobiledevice
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
相較於赫赫有名的 Jailbreak 與 Cydia,本篇所要介紹的 libmobiledevice 可就沒那麼廣為人知了。不過或許大家還是有聽過 iTools 這個號稱可以用以取代 iTunes 進行 iDevices 管理的工具,其實 libmobiledevice 的功能幾乎就如同 iTools 般強大。而且因為源碼開放,可以自行編譯,對於開發者而言,可以說是更為實用。
由於 Apple 官方並不支持使用者人數甚少的 Linux 桌面系統,但是 Linux 上的高手決不能忍受為了要連接 iDevices 還得換用商業系統的桌面環境。因此就自行逆向工程解譯出 iDevices 與 Windows / Mac Host 連接時的通訊協定,也就成就了這套橫跨三大桌面平台的非官方 USB Host 端 library。
再者,libmobiledevice 無須越獄,卻能夠讓你在桌面端掛載 iDevices 的檔案系統,進行各種批次操作。想想如果你是教育單位 IT 部門的工程師,工作上需要為一整個班級準備 iPad 上課,在下課時的短暫時間又得為另外一個班級重灌乾淨系統與安裝好特定 apps 的 iPad。官方的 Apple Configurator 也不過才在今年四月中釋出而已,詳見中文介紹。顯然目前僅只專為個人化應用所設計的行動裝置,還有許多改善空間。而且不只是 IT 的需求,嵌入式系統也需要能夠與 iDevices 協同工作的多種連接方式。
其實單看面對較複雜的終端使用者環境時,無須越獄就能夠使用,這就相當值得研究了。雖說是為了桌面環境所建立,但是運行在目前取得容易又很廉價的 Linux 嵌入式系統上,卻不是太大問題,只要確定你的 Linux 目標板上擁有 USB 2.0 Host 的介面即可。
這個 library 主要架構在 usbmuxd 這個 USB library 之上,除了本身提供的幾個命令列工具之外,還可以讓其他的 Unix 工具呼叫應用。因為相關開源軟體之間的 dependencies 似乎還不少,如果你不是想要研究它內部架構的實作的話,建議可以直接利用 Linux 或 Mac OS X 上的套件管理程式安裝這些工具,先行試用看看各種功能是否一如預期,再慢慢琢磨如何修改打造成符合自己應用目的的工具。
在 libimobiledevice 下方列出了許多功能的完成進度表,可以看到還有不少標示不完整支援或版本未達最新版的功能,不過好像需要應用的機會也不大,那些標示已經完備的功能已經非常精彩了。在這裡我們挑兩個筆者感興趣又有特色的功能,來談談他們可能的應用方式。
Filesystem Access — 需要安裝 iFuse 這個 FUSE: Filesystem in Userspace 架構下的應用工具。用途很簡單,你可以對 iDevices 的檔案系統進行操作管理。譬如一個比較邪惡的用途就是取得線上影音播放 apps 提供離線快取的影片檔,以便節省 iDevices 上寸土寸金的 Flash 空間。
TCP Tunneling — 這個很讚!嵌入式系統通常不會配置豐富的人機介面,但是透過 TCP Tunneling 的方式,我們可以在嵌入式端啟動一個小小的 web server,而在 iPhone 端撰寫整套 UI,不就是一套完美的解答了嗎?WiFi 雖然好用,但可能基於保密或其他成本、環境之類的原因,嵌入式端未必會放上 WiFi 介面。而現在只要透過 USB 線就能啟動 TCP 通訊,無疑地是一個非常酷的解法。
總之,筆者認為這個 library 的可能性其實具備很大的潛力。目前 Linux 嵌入式系統的價格已經快速地落入 100 USD 以下,體積也相當小巧。所以如果正好專案的規格相符的話,套上這個 library 肯定能讓你整個解決方案的應用方式大為加分。所以筆者要為這套 library 抱屈的就是,網路上談論、介紹它的資料實在不多,真是一個被埋沒的好東西啊!
http://www.mcuapps.com/blog/2012/05/29/the-undervalued-libimobiledevice/
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=834