gpt4 book ai didi

ios - 从 Mac 命令行访问 iOS 应用程序目录(沙盒)

转载 作者:可可西里 更新时间:2023-11-01 04:53:29 56 4
gpt4 key购买 nike

我需要从 Mac 或 Linux 使用命令行(非图形用户界面)访问安装在 iOS 设备上的应用程序的沙箱目录。这是为了帮助开发和测试自动化。将一个 json 文件放到沙箱中可以让我设置参数,例如额外的调试消息和更小的刷新间隔。

像 iFunBox 这样的工具可以完美运行,但只是图形化的,需要多次点击才能完成。发给开发人员的电子邮件没有得到回复。它也不支持 AppleScript。我确实找到了另一个提供 Fuse 模块的应用程序,但结果是有问题,尤其是当应用程序被卸载然后重新安装时(为了重置回首次用户体验)。我向开发人员报告了这些问题,但目前还没有解决办法。

我需要做的事情是:

  • 测试是否安装了具有特定 bundle id 的应用
  • 如果 Library/Caches/MYLIBNAME 目录不存在则创建
  • 将 ~100 字节的 json 文件从 Mac 复制到该目录
  • 获取该文件的副本
  • 仅适用于 Linux 的解决方案也是可以接受的
  • 设备未越狱,我不希望将其作为要求

在某些情况下,我没有该应用程序的源代码,因为它是使用我的库的第三方,因此编译不同版本的应用程序是不切实际的。

多亏了 lxt,答案在下面的许多评论中。总结是:

  • 与 libimobiledevice 相关的各种库和程序可以解决问题
    • 使用patched iFuse 挂载应用沙箱
    • 使用 idevicesyslog 查看控制台日志
    • 使用ideviceinstaller安装/卸载应用
  • 与 libimobiledevice 相关的各种库和程序很难在 Linux 或 Mac 上编译,如果不是不可能的话,并且没有源代码或二进制文件的统一分发
    • 对于 Ubuntu,尝试 libimobiledevice(可能有 3 个后缀)、ideviceinstaller 和 libimobiledevice-utils 包
    • 对于 Mac,搜索 libimobiledevice-macosx 可能会让您有所收获

最佳答案

这会有点棘手,因为我认为您已经发现应用程序名称是在每次安装时随机生成的。我认为没有办法超越那个,当然我知道。这解释了您在模拟新安装时遇到的问题(...应用程序目录名称更改为新的随机哈希,然后您就卡住了)。

虽然我更喜欢以其他方式访问这个配置文件(可能通过网络,并且有一些代码只在调试/测试构建时执行检查它),如果你确实想这样做那么我' d 建议尝试编写脚本,当您想模拟新安装时选择最近修改过的应用程序目录。但这非常 hacky。

如果您无法插入仅在调试/测试构建时执行的条件代码,那么我认为 iOS 在文件系统级别使用的随机应用程序命名模式无论采用何种方法都会给您带来问题。

更新:关于 iFuse 和 libimobiledevice - 开箱即用,它将您限制在文档目录中。这是因为 iFuse 的作者不让入门级用户混淆,也因为不同的 iOS 版本结构略有不同。您可以注释掉 iFuse 源代码中的行 - fuse_opt_add_arg(&args, "-osubdir=Documents"); - 以通过挂载访问库目录。如果这样做,您显然需要自己重新编译 iFuse。

关于ios - 从 Mac 命令行访问 iOS 应用程序目录(沙盒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980545/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com