有没有办法在iOS模拟器上查看文件系统?

时间:2011-06-25 21:22:34

标签: iphone ios nsfilemanager

有没有办法浏览当前正在运行或刚刚杀死的iOS模拟器的文件系统?如果能够做到这一点,我会满足于能够看到特定应用程序的文件。

请注意,我不想以编程方式执行此操作。我想在Finder中查看/打开文件。

11 个答案:

答案 0 :(得分:212)

更新:自iOS 8以来:

<强>〜/库/开发商/ CoreSimulator /设备

过去的位置:

〜/ Library / Application Support / iPhone Simulator

它有你运行的所有模拟器模型(4.0,4.1,5.0等)的目录,转到你在Xcode中运行的模拟器。

进入文件夹后,转到“应用程序”,选择显示文件日期的“查找程序​​”选项,然后按日期排序。您的应用程序将是最新的,因为它只是更改了目录...

目录中包含与您的应用程序相关的所有内容。您甚至可以在运行之间删除文件,以恢复到已知状态的存储数据库,例如......

我经常去那里,我将iPhone模拟器目录保存在我的Finder边栏中。

请注意,对于iOS8,模拟器文件夹位于一个完全不同的目录中 - 实际上是分散在几个目录中,每次运行应用程序时,应用程序特定文件的文件夹名称都会更改。

答案 1 :(得分:73)

iOS 8

设备

~/Library/Developer/CoreSimulator/Devices

应用

~/Library/Developer/CoreSimulator/Devices/{{Device Code}}/data/Containers/Bundle/

答案 2 :(得分:27)

打开程序“活动监视器”,搜索您的应用程序(只是应用程序名称,而不是模拟器),单击“信息”并打开“打开文件和端口”。复制第二个条目(类似/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp)。这是正在运行的应用,而<...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/是捆绑,而<...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*是沙盒文件夹。

如果您将此作为open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"传递给终端,则该文件夹将在Finder中打开。

听起来很复杂但不是。

答案 3 :(得分:13)

  

基于zsero回答

详细

macOS 10.13.1

解决方案1 ​​

  

在终端

中运行以下行

<强>模板

open `xcrun simctl get_app_container booted BUNDLEID_OF_YOUR_APP data` -a Finder

完整样本

open `xcrun simctl get_app_container booted com.Test data` -a 

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP =&#34;捆绑标识符&#34;

enter image description here

解决方案的功能1

  • 打开文件以获取应用模拟器目录

解决方案2

  

创建一个包含应用名称和代码的bash脚本:

script_file_name = `basename "$0"`
open `xcrun simctl get_app_container booted $script_file_name data`

enter image description here

解决方案2的功能

  • 打开文件以获取应用模拟器目录
  • 重命名文件以获取另一个应用模拟器目录

结果

enter image description here

答案 4 :(得分:9)

有一个漂亮的应用程序也支持XCode 6模拟器。

https://github.com/somegeekintn/SimDirs

很棒,使用它!

答案 5 :(得分:9)

容易。快速。 Xcode 10 +。

  1. 运行print(NSHomeDirectory())复制路径。
  2. 打开 Finder 应用,然后按Shift+Cmd+G
  3. 粘贴复制的路径,然后按 GO

1。的替代方法是捕获一个断点并在控制台中执行po NSHomeDirectory()

答案 6 :(得分:2)

旧帖子,但我认为值得一提的是SimPholders来查找你的模拟器文件。它是一个菜单栏项,可跟踪您的模拟器应用程序,并允许您直接转到其文件夹和内容。这太棒了。

(原始答案:https://stackoverflow.com/a/26557165/377384

答案 7 :(得分:1)

根据@zsero的回答,我制作了一个简短的bash脚本,它直接打开你的应用程序ID的模拟器文件夹。非常方便!

<强> openappfolder.sh

#!/bin/bash

APPID=$1
if OUTPUT=`xcrun simctl get_app_container booted $APPID data` ; then
    open $OUTPUT
else
    echo "$APPID not found!"
fi 2>/dev/null

然后只是

openappfolder.sh com.bundle.id

答案 8 :(得分:0)

在Xcode版本8.2.1(8C1002)上,我发现在此路径中的模拟器上安装了.app文件:~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator

答案 9 :(得分:0)

对于Swift 4.2及更高版本,请放置以下代码:

#if targetEnvironment(simulator)
    print("::::: SIMULATOR :::::")
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("App Documents Directory:\n\(documentsPath)\n")
    }
#endif

...在源代码位置,例如:

func application(
    _ application: UIApplication, 
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
    // ...
    return true
}

在终端命令行上将结果路径与cdopen一起使用。或者,将路径粘贴到shift-cmd-G“转到文件夹...”查找器提示中。

相关答案,其中包括较旧的语言版本:Document Directory Path of iOS 8 Beta Simulator

答案 10 :(得分:0)

首先,从终端获取具有设备ID 的模拟器列表

  1. 仪器-s设备
  2. xcrun simctl列表

然后将设备ID放在路径下面。您将获得特定的模拟器文件系统 parent.child.Add(child1);