如何从终端访问iOS 8设备上的应用程序数据?

时间:2015-02-19 23:05:28

标签: ios shell ios8 filesystems archive

我们正在对我们的iOS应用程序运行一些测试。该应用程序在Library / Caches / Logs /中生成一个日志文件。在iOS 7设备上,我们可以创建应用程序的存档,其中包含应用程序数据,并将存档从设备复制到我们的本地计算机。使用ideviceinstallerhttp://www.libimobiledevice.org/)中的libimobiledevice实用程序,然后我们可以解压缩存档并解压缩日志文件:

# Archive the app and copy to our local machine
ideviceinstaller --udid  $DEVICE_ID --archive ${BUNDLE_ID} -o copy=.

# Unzip the archive and redirect the log file to a file in our current directory
unzip -p ${BUNDLE_ID}.ipa "$(unzip -l ${BUNDLE_ID}.ipa | grep -o "Container/Library/Caches/Logs/${LOG_FILE_NAME}")" > ./${LOG_FILE_NAME}

不幸的是,这似乎不再适用于iOS 8设备,因为应用程序的数据存储在文件系统中的位置发生了变化。特别是,应用档案中不再包含应用数据:https://developer.apple.com/library/ios/technotes/tn2406/_index.html

我们需要一种方法来访问设备上的此日志文件,并通过shell脚本将其复制到本地计算机。我对iOS开发很陌生,所以我对如何做到这一点感到困惑,或者它是否仍然适用于iOS 8。

如果有任何需要澄清的话,我们将非常感谢您的建议。

1 个答案:

答案 0 :(得分:3)

我找到了一个名为ifusehttps://github.com/libimobiledevice/ifuse)的实用程序,它允许我安装应用程序的沙盒根文件夹并将文件复制到本地计算机:

# E.g. ifuse --container com.blah.yourappname <mountpoint>
ifuse --container ${BUNDLE_ID} ~/mnt

# I found I needed to sleep for a few seconds before trying to access
# the filesystem, otherwise I'd get "Device not configured" errors...
sleep 5 

cp ~/mnt/Library/Caches/Logs/${LOG_FILE} ~
umount ~/mnt

希望这有助于其他人!