¿Hay alguna forma de ver el sistema de archivos en el simulador de iOS?

170

¿Hay alguna forma de explorar el sistema de archivos de un simulador de iOS que se está ejecutando actualmente o que se acaba de matar? Me conformaría con poder ver los archivos de una aplicación específica si hay una manera de hacerlo.

Tenga en cuenta que no quiero hacer esto programáticamente. Quiero ver / abrir los archivos en el Finder.

Chris Williams
fuente

Respuestas:

232

ACTUALIZAR: desde iOS 8:

~ / Library / Developer / CoreSimulator / Dispositivos

La ubicación solía ser:

~ / Library / Application Support / iPhone Simulator

Tenía directorios para todos los modelos de simuladores (4.0, 4.1, 5.0, etc.) que haya ejecutado, vaya al que está ejecutando en Xcode.

Una vez en una carpeta, vaya a Aplicaciones, elija la opción Finder que muestra la fecha de los archivos y ordene por fecha. Su aplicación será la más reciente ya que acaba de cambiar el directorio ...

Dentro del directorio está todo lo relacionado con su aplicación. Incluso puede colocar archivos allí entre ejecuciones, para volver a una base de datos almacenada en un estado conocido, por ejemplo ...

Voy allí con la frecuencia suficiente y mantengo el directorio del Simulador de iPhone en la barra lateral de Finder.

Tenga en cuenta que con iOS8, las carpetas del simulador están en un directorio totalmente diferente, realmente dividido en unos pocos directorios, con nombres de carpetas para archivos específicos de la aplicación que cambian cada vez que ejecuta su aplicación.

Kendall Helmstetter Gelner
fuente
20
Para ver la carpeta ~ / Library en Lion, deberá ejecutar este comando en Terminal: chflags nohidden ~ / Library /
Dan J
9
También puede presionar la tecla de opción mientras ve el Gomenú del Finder
Wayne
3
Yo uso ⌘⇧G de Finder. Es más rápido que abrir Terminal a cd.
Jacob Pritchett
3
Mantenga presionada 'opción' y
presione
3
Encontrar el archivo de una aplicación específica es casi imposible entre los hashes aleatorios, use este comando para acceder realmente a los archivos de la aplicación:xcrun simctl get_app_container booted my.app.id data
hyperknot
77

iOS 8

Dispositivos

~/Library/Developer/CoreSimulator/Devices

Aplicaciones

~/Library/Developer/CoreSimulator/Devices/{{Device Code}}/data/Containers/Bundle/
Mohsen
fuente
8
Para determinar su actual {{Device Code}}}, una manera fácil es abrir el simulador deseado en Xcode, y luego en Finder ordenar el ~/Library/Developer/CoreSimulator/Devices/directorio Date Modified. El más reciente es el que quieres.
Stan James
2
Para los datos de la aplicación: ~ / Library / Developer / CoreSimulator / Devices / {{Device Code}} / data / Containers / Data / Application / {{Application Id}}
Bjørn Egil
En realidad, puede ver {{Device Code}}en Hardware> Dispositivo> Administrar dispositivos ...
Filius Patris
30

Abra el programa "Monitor de actividad", busque su aplicación (solo el nombre de la aplicación, no el simulador), haga clic en "Información" y abra "Abrir archivos y puertos". Copie la segunda entrada (algo así como /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). Esta es la aplicación en ejecución, mientras que <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/es el paquete, y<...>/B97A9504-0FA5-4826-BB6D-A2335A676459/* la carpeta protegida.

Si pasa esto open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"al terminal, la carpeta se abrirá en Finder.

Suena complicado pero no lo es.

vikingosegundo
fuente
¡Buen punto! En particular, no necesita ir .appa ver un sistema de archivos de su aplicación.
Yevhen Dubinin
Gran sugerencia ... Realmente espero que haya un script o poca utilidad para ayudar con esto ... Cada dispositivo iOS emulado como una carpeta completamente diferente parece ... La estructura de carpetas está por todas partes en la nueva versión ... :(
Markive
excelente respuesta, especialmente cuando la ruta ha cambiado con las versiones de Xcode
rgkobashi
21

Fácil. Rápido. Xcode 10+.

  1. Usa print(NSHomeDirectory())y copia el camino.
  2. Abra la aplicación Finder y presioneShift+Cmd+G
  3. Pegue la ruta copiada y presione IR

La alternativa para 1. es atrapar un punto de interrupción y hacerlo po NSHomeDirectory()en la consola.

Tung Fam
fuente
¿Dónde ejecuto el paso 1?
Carson Holzheimer el
1
@CarsonHolzheimer en su código, por ejemplo, en viewDidLoadsu ViewController. tal vez debería haber escrito no "ejecutar" sino algo más. ¡Gracias!
Tung Fam
18

basado en la respuesta de zsero

Detalles

macOS 10.13.1

Solución 1

Ejecute la siguiente línea en la terminal

Modelo

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

Muestra completa

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Identificador del paquete"

ingrese la descripción de la imagen aquí

Características de la solución 1

  • abrir archivo para obtener el directorio del simulador de aplicaciones

Solución 2

Cree una secuencia de comandos bash con un nombre de su aplicación y código:

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

ingrese la descripción de la imagen aquí

Características de la solución 2

  • abrir archivo para obtener el directorio del simulador de aplicaciones
  • cambiar el nombre del archivo para obtener otro directorio del simulador de aplicaciones

Resultado

ingrese la descripción de la imagen aquí

Vasily Bodnarchuk
fuente
Parece que necesita agregar "Finder" al final de la cadena "Muestra completa".
phantom_2
7

Si desea automatizar la obtención de la ubicación o usar esa carpeta en las secuencias de comandos, puede obtener la ubicación precisa de un simulador en ejecución con el siguiente comando:

xcrun simctl get_app_container booted my.app.id data
hipernudo
fuente
1

Basado en la respuesta de @zsero, hice un breve bashscript que abre directamente la carpeta del simulador de la identificación de su aplicación. ¡Muy útil!

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

Entonces solo

openappfolder.sh com.bundle.id

👍

Martín
fuente
1

Para Swift 4.2 y superior, coloque algo como el siguiente código:

#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

... en una ubicación de código fuente como:

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

Use la ruta resultante con cdo openen la línea de comando del terminal. O pegue la ruta en elshift-cmd-G indicador del buscador "Ir a la carpeta ...".

Respuesta relacionada que incluye versiones de idiomas anteriores: Ruta del directorio de documentos de iOS 8 Beta Simulator

l --marc l
fuente
0

En Xcode Versión 8.2.1 (8C1002) encontré los archivos .app instalados en el simulador en esta ruta: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator

JoxieMedina
fuente
0

primero, obtenga la lista de simuladores con la ID del dispositivo desde la terminal

  1. instrumentos -s dispositivos
  2. lista de xcrun simctl

Luego, pon la identificación del dispositivo debajo de la ruta. obtendrá un sistema de archivos de simulador específico ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Muhammad Numan
fuente