Gibt es eine Möglichkeit, das Dateisystem im iOS-Simulator anzuzeigen?


170

Gibt es eine Möglichkeit, das Dateisystem eines aktuell laufenden oder gerade getöteten iOS-Simulators zu durchsuchen? Ich würde mich damit zufrieden geben, die Dateien einer bestimmten App sehen zu können, wenn es eine Möglichkeit gibt, dies zu tun.

Beachten Sie, dass ich dies nicht programmgesteuert tun möchte. Ich möchte die Dateien im Finder sehen / öffnen.

Antworten:


232

UPDATE: Seit iOS 8:

~ / Bibliothek / Entwickler / CoreSimulator / Geräte

Der Ort war früher:

~ / Bibliothek / Anwendungsunterstützung / iPhone Simulator

Es gab Verzeichnisse für alle Simulatormodelle (4.0, 4.1, 5.0 usw.), die Sie jemals ausgeführt haben. Wechseln Sie zu dem Verzeichnis, von dem aus Sie in Xcode ausgeführt haben.

Gehen Sie in einem Ordner zu Anwendungen, wählen Sie die Option Finder, die das Datum für Dateien anzeigt, und sortieren Sie nach Datum. Ihre Anwendung ist die neueste, da sie gerade das Verzeichnis geändert hat ...

Im Verzeichnis befindet sich alles, was mit Ihrer Anwendung zu tun hat. Sie können zwischen den Läufen sogar Dateien dort ablegen, um beispielsweise in einem bekannten Zustand zu einer gespeicherten Datenbank zurückzukehren ...

Ich gehe oft genug dorthin und behalte das iPhone Simulator-Verzeichnis in meiner Finder-Seitenleiste.

Beachten Sie, dass sich die Simulatorordner unter iOS8 in einem völlig anderen Verzeichnis befinden - wirklich auf einige Verzeichnisse verteilt, mit Ordnernamen für anwendungsspezifische Dateien, die sich bei jeder Ausführung Ihrer App ändern.


20
Um den Ordner ~ / Library in Lion anzuzeigen, müssen Sie diesen Befehl im Terminal ausführen: chflags nohidden ~ / Library /
Dan J

9
Sie können auch die Optionstaste drücken, während Sie Finders GoMenü anzeigen
Wayne

3
Ich benutze ⌘⇧G von Finder. Es ist schneller als das Öffnen des Terminals für eine CD.
Jacob Pritchett

3
Halten Sie 'Option' gedrückt und
drücken Sie

3
Das Finden der Datei einer bestimmten App zwischen den zufälligen Hashes ist fast unmöglich. Verwenden Sie diesen Befehl, um tatsächlich zu den Dateien der App zu gelangen:xcrun simctl get_app_container booted my.app.id data
Hyperknot

77

iOS 8

Geräte

~/Library/Developer/CoreSimulator/Devices

Anwendungen

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

8
Um Ihren aktuellen {{Device Code}}}Wert zu ermitteln, können Sie auf einfache Weise den gewünschten Simulator in Xcode öffnen und dann im Finder das ~/Library/Developer/CoreSimulator/Devices/Verzeichnis nach sortieren Date Modified. Das neueste ist das, was Sie wollen.
Stan James

2
Für die Anwendungsdaten: ~ / Bibliothek / Entwickler / CoreSimulator / Geräte / {{Gerätecode}} / Daten / Container / Daten / Anwendung / {{Anwendungs-ID}}
Bjørn Egil

Tatsächlich können Sie die {{Device Code}}unter Hardware> Gerät> Geräte verwalten ...
Filius Patris

30

Öffnen Sie das Programm "Activity Monitor", suchen Sie nach Ihrer App (nur den Namen der Apps, nicht den Simulator), klicken Sie auf "Informationen" und öffnen Sie "Dateien und Ports öffnen". Kopieren Sie den zweiten Eintrag (so etwas wie /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). Dies ist die laufende App, <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/das Bundle und <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*der Sandbox-Ordner.

Wenn Sie dies open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"an das Terminal übergeben, wird der Ordner im Finder geöffnet.

Klingt kompliziert, ist es aber nicht.


Guter Punkt! Insbesondere müssen Sie nicht .appzu einem Dateisystem Ihrer Anwendung gehen.
Yevhen Dubinin

Toller Vorschlag. Ich hoffe wirklich, dass es ein Skript oder ein kleines Hilfsprogramm gibt, das dabei hilft. Jedes iOS-Gerät wird anscheinend als völlig anderer Ordner emuliert. Die Ordnerstruktur ist in der neuen Version
allgegenwärtig

Hervorragende Antwort, besonders wenn sich die Route mit den Xcode-Versionen
geändert hat

21

Einfach. Schnell. Xcode 10+.

  1. Verwenden print(NSHomeDirectory())und kopieren Sie den Pfad.
  2. Öffnen Sie die Finder- App und drücken SieShift+Cmd+G
  3. Fügen Sie den kopierten Pfad ein und drücken Sie GO

Alternative für 1. ist es, einen Haltepunkt abzufangen und po NSHomeDirectory()in der Konsole zu tun .


Wo führe ich Schritt 1 aus?
Carson Holzheimer

1
@CarsonHolzheimer in Ihrem Code, zum Beispiel in viewDidLoadIhrem ViewController. Vielleicht hätte ich nicht "rennen" schreiben sollen, sondern etwas anderes. Vielen Dank!
Tung Fam

18

basierend auf zsero Antwort

Einzelheiten

macOS 10.13.1

Lösung 1

Führen Sie die folgende Zeile im Terminal aus

Vorlage

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

Vollständige Probe

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Bundle-ID"

Geben Sie hier die Bildbeschreibung ein

Merkmale der Lösung 1

  • Datei öffnen, um das App-Simulator-Verzeichnis abzurufen

Lösung 2

Erstellen Sie einen Bash-Scrip mit dem Namen Ihrer App und dem Code:

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

Geben Sie hier die Bildbeschreibung ein

Merkmale der Lösung 2

  • Datei öffnen, um das App-Simulator-Verzeichnis abzurufen
  • Benennen Sie die Datei um, um ein anderes App-Simulator-Verzeichnis zu erhalten

Ergebnis

Geben Sie hier die Bildbeschreibung ein


Anscheinend müssen Sie "Finder" am Ende der Zeichenfolge "Full Sample" hinzufügen.
Phantom_2


7

Wenn Sie das Abrufen des Speicherorts automatisieren oder diesen Ordner für die Skripterstellung verwenden möchten, können Sie den genauen Speicherort mit dem folgenden Befehl von einem laufenden Simulator abrufen:

xcrun simctl get_app_container booted my.app.id data

2

Alter Beitrag, aber ich denke, es lohnt sich, SimPholders zu erwähnen , um Ihre Simulator-Dateien zu finden. Es ist ein Menüleistenelement, mit dem Sie Ihre Simulator-Apps verfolgen und direkt zu deren Ordnern und Inhalten wechseln können. Es ist super toll.

(ursprüngliche Antwort hier: https://stackoverflow.com/a/26557165/377384 )


1

Basierend auf der Antwort von @zsero habe ich ein kurzes bashSkript erstellt, das den Simulatorordner Ihrer Anwendungs-ID direkt öffnet. Sehr praktisch!

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

Dann einfach

openappfolder.sh com.bundle.id

👍


1

Geben Sie für Swift 4.2 und höher etwa den folgenden Code ein:

#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

... an einem Quellcode-Speicherort wie:

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

Verwenden Sie den resultierenden Pfad mit cdoder openin der Terminalbefehlszeile. Oder fügen Sie den Pfad in die shift-cmd-GFinder-Eingabeaufforderung "Gehe zu Ordner ..." ein.

Verwandte Antwort, die ältere Sprachversionen enthält: Dokumentverzeichnispfad von iOS 8 Beta Simulator


0

In Xcode Version 8.2.1 (8C1002) habe ich die auf dem Simulator installierten .app-Dateien unter folgendem Pfad gefunden: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator


0

Rufen Sie zuerst die Simulatorliste mit der Geräte-ID vom Terminal ab

  1. Instrumente -s Geräte
  2. xcrun simctl Liste

Setzen Sie dann die Geräte-ID unter den Pfad. Sie erhalten ein spezifisches Simulator-Dateisystem ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.