我需要使用 Mac 或 Linux 上的命令行(非 GUI)访问 iOS 设备上安装的应用程序的沙箱目录。这有助于开发和测试自动化。将 json 文件放入沙箱中可以让我设置参数,例如额外的调试消息和更小的刷新间隔。
像 iFunBox 这样的工具工作得很好,但只是图形化的,需要多次点击才能完成。发给开发商的电子邮件没有得到回复。它也不支持 AppleScript。我确实找到了另一个提供 Fuse 模块的应用程序,但结果是有错误的,特别是如果该应用程序被卸载然后重新安装(为了重置回第一次用户体验)。我向开发商报告了问题,但目前还没有解决办法。
我需要做的事情是:
- 测试是否安装了具有特定bundle id的应用程序
- 如果 Library/Caches/MYLIBNAME 目录不存在,则创建它
- 将大约 100 字节的 json 文件从 Mac 复制到该目录
- 获取该文件的副本
- 仅适用于 Linux 的解决方案也是可以接受的
- 设备未越狱,我不希望将其作为要求
在某些情况下,我没有应用程序的源代码,因为它是使用我的库的第三方,因此编译不同版本的应用程序是不切实际的。
感谢lxt,答案在下面的许多评论中。总结是:
- Various libraries and programs associated with libimobiledevice can solve the problems
- Use patchediFuse挂载应用程序沙箱
- 使用idevicesyslog查看控制台日志
- 使用 ideviceinstaller 安装/卸载应用程序
- The various libraries and programs associated with libimobiledevice are incredibly difficult if not impossible to compile as is on Linux or Mac, and there is no unified distribution of the source or binaries
- 对于 Ubuntu,请尝试 libimobiledevice(可能有 3 个后缀)、ideviceinstaller 和 libimobiledevice-utils 软件包
- 对于 Mac,搜索 libimobiledevice-macosx 可能会帮助您找到一些方法
这会有点棘手,因为我认为您已经发现应用程序名称是在每次安装时随机生成的。据我所知,我认为没有办法解决这个问题。这解释了您在模拟新安装时遇到的问题(...应用程序目录名称更改为新的随机散列,然后您就陷入困境)。
虽然我的偏好是以其他方式访问此配置文件(可能通过网络,并且有一些仅在调试/测试版本检查时执行的代码),但如果您确实想这样做,那么我建议尝试就像编写一个脚本一样,当您想要模拟新安装时,请选择最近修改的应用程序目录。但这非常hacky。
如果您无法插入仅在调试/测试版本上执行的条件代码,那么我认为无论您采取什么方法,iOS 在文件系统级别使用的随机应用程序命名架构都会给您带来问题。
Update:关于 iFuse 和 libimobiledevice - 开箱即用,它将您限制在文档目录中。这是因为 iFuse 的作者不想让入门级用户感到困惑,也因为根据 iOS 版本的不同,其结构略有不同。您可以注释掉 iFuse 源代码中的行 -fuse_opt_add_arg(&args, "-osubdir=Documents");
- 通过挂载访问库目录。如果这样做,您显然需要自己重新编译 iFuse。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)