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
常用功能

安装ipa包,卸载应用
//命令安装一个ipa文件到手机上,如果是企业签名的,非越狱机器也可以直接安装了。
ideviceinstaller -i xxx.ipa

//命令卸载应用,需要知道此应用的bundleID
ideviceinstaller -U [bundleID]
查看系统日志
idevicesyslog
查看当前已连接的设备的UUID
idevice_id --list
截图
idevicescreenshot
查看设备信息
ideviceinfo
获取设备时间
idevicedate
设置代理(也好像是端口转发的工具,具体能利用它干啥还没试过)
iproxy
挂载DeveloperDiskImage,用于调试
ideviceimagemounter
获取设备名称
idevicename
调试程序(需要预先挂载DeveloperImage)
idevicedebug
查看和操作设备的描述文件
ideviceprovision list
ideviceinstaller安装ipa报错(已经支持iOS11)

"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
挂载文件系统工具: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

作者:望山观海
链接:http://www.jianshu.com/p/6423610d3293
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


作者:望山观海
链接:http://www.jianshu.com/p/6423610d3293
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。









本文转自 知止内明 51CTO博客,原文链接:http://blog.51cto.com/357712148/1982201,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
84 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
39 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
91 2
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
47 1
|
3月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
52 1
|
6天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
9 0
|
21天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。
|
1月前
|
Linux iOS开发 开发者
ios ipa包上传需要什么工具
ios ipa包上传需要什么工具
24 0
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
193 2