产品与解决方案 解决 iPhone 在非越狱情况通过 command line 访问沙盒实现挂载

vigossjjj · 2014年03月05日 · 最后由 起飞的猪猪 回复于 2019年04月19日 · 5302 次阅读
本帖已被设为精华帖!

准备工作:
1.安装 libimobiledevice,ifuse,ifuse 依赖与 libimobiledevice,
可以选择 airport 或 brew 安装
sudo brew update
sudo brew install libimobiledevice
sudo brew install ifuse

2.拷贝 osxfusefs.fs 到/Library/Filesystems,并添加执行权限
sudo /bin/cp -RfX /usr/local/Cellar/osxfuse/2.6.2/Library/Filesystems/osxfusefs.fs /Library/Filesystems
sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs

3.终端输入 ifuse -h,会打印出详细使用说明
挂载某个应用的沙盒到~/myapp:
app_bundleId=com.my.app
udid=xxxxxxxxxxxx
ifuse -u ${udid} --container ${app_bundleId} ~/myapp

4.关闭挂载:
umount ~/myapp

PS:itoos 与 iexploer 等工具都是基于 libimobiledevice 库进行开发的,iOS 6.x 的越狱也用到了此库,更为重要的是 appium 也依赖于它,如果大家有安装过 appium 环境那么可以查看下 build/libimobiledevice-macosx/,有许多可执行的 unix 文件
idevice_id
idevicebackup
idevicebackup2
idevicedate
idevicedebugserverproxy
idevicediagnostics
ideviceenterrecovery
ideviceimagemounter
ideviceinfo
idevicepair
ideviceprovision
idevicescreenshot
idevicesyslog
可以直接使用这些命令行工具,例如:
idevice_id -l 可直接查看手机 id
idevicediagnostics 可让 iPhone 进行重启,关机,睡眠等。

我们可以利用 libimobiledevice 与 ifuse 进行 shell 封装,辅助实现自动化的测试过程。

另附上 git 地址:
https://github.com/libimobiledevice/libimobiledevice
https://github.com/libimobiledevice/ifuse

第一次发技术相关贴,如有描述不清或错误的地方,请大家多多指点,一起学习哈~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 16 条回复 时间 点赞

我去。。。好高大上。。。明儿我就来试试看~~

强力贴,学习了!

@vigossjjj
2.拷贝 osxfusefs.fs 到/Library/Filesystems,并添加执行权限
sudo /bin/cp -RfX /usr/local/Cellar/osxfuse/2.6.2/Library/Filesystems/osxfusefs.fs /Library/Filesystems
sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs

这里需要安装 osxfuse,如果用 dmg 安装的话,就不需要 cp 过去了。
不过你应该是用 brew 安装的。

#4 楼 @lihuazhang 对的 brew 安装

#5 楼 @vigossjjj 还是不太会用。其实 ifuse 本身是一个工具吧? 要插入实体机?

#6 楼 @lihuazhang 这个是解决对真机沙盒的访问,我主要用来做自动拷贝沙盒中的文件

您好,我现在是要自己实现 ifuse 的功能,拷贝沙箱的文件,但是我使用 libimobiledevice 库开启 house_arrest 服务访问 app 沙箱,但是不会用 house_arrest,调用 api 都是正常,但是不知道怎么样拿到真正的沙箱文件

#8 楼 @hwj2015forlib 用 iExplorer 就可以了。

试了下 brew install ifuse没有成功,改成这个样子才好的 brew install homebrew/fuse/ifuse

另外,也不需要每个 brew 前面加个 sudo

黑水 [该话题已被删除] 中提及了此贴 07月28日 09:12

@vigossjjj ,十分感谢,很好用的方法,挂载沙盒后(非越狱),可以正常从中 pull 文件出来;
请问如果我想 push 图片到 iphone 中,这个可以实现吗?
我试了下,发现 push 之后从应用中查看不到图片,似乎是少了类似于 Android 的 adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///storage/sdcard0 的这种动作?

#13 楼 @yingruoyuan iOS 为什么我这边一直报错,能请教一下怎么解决的吗?Failed to connect to lockdownd service on the device

Ying,Ruoyuan 回复

cp 或者 mv 不行么,我都是 mv 到本地😆

vigossjjj 回复

你好,ifuse 可以挂载用企业证书签名的 app 吗?

梦梦GO 回复

这里的 cp 和 mv 是指?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册