C'è un modo per vedere il file system sul simulatore iOS?


170

Esiste un modo per sfogliare il file system di un simulatore iOS attualmente in esecuzione o appena ucciso? Mi accontenterei di poter vedere i file di un'app specifica se c'è un modo per farlo.

Nota che non voglio farlo in modo programmatico. Voglio vedere / aprire i file nel Finder.

Risposte:


232

AGGIORNAMENTO: da iOS 8:

~ / Library / Developer / CoreSimulator / Devices

La posizione era:

~ / Libreria / Supporto applicazioni / Simulatore iPhone

Aveva directory per tutti i modelli di simulatori (4.0, 4.1, 5.0, ecc.) Che tu abbia mai eseguito, vai a quello da cui stai eseguendo in Xcode.

Una volta in una cartella, vai su Applicazioni, scegli l'opzione Trova che mostra la data per i file e ordina per data. La tua applicazione sarà la più recente poiché ha appena cambiato la directory ...

All'interno della directory c'è tutto ciò che riguarda la tua applicazione. Puoi anche trascinare i file lì tra le esecuzioni, per ripristinare un database memorizzato in uno stato noto, ad esempio ...

Ci vado abbastanza spesso da tenere la directory di iPhone Simulator nella barra laterale del Finder.

Si noti che con iOS8, le cartelle del simulatore si trovano in una directory totalmente diversa, suddivisa in più directory, con nomi di cartelle per file specifici dell'applicazione che cambiano ogni volta che si esegue l'app.


20
Per vedere la cartella ~ / Library in Lion dovrai eseguire questo comando in Terminal: chflags nohidden ~ / Library /
Dan J

9
Puoi anche premere il tasto opzione mentre visualizzi il Gomenu del Finder
Wayne,

3
Uso ⌘⇧G dal Finder. È più veloce dell'apertura di Terminal su cd.
Jacob Pritchett,

3
Tieni premuto 'opzione' e premi 'Vai' nella barra dei menu nel Finder
Matjan,

3
Trovare il file di un'app specifica è quasi impossibile tra gli hash casuali, utilizzare questo comando per arrivare effettivamente ai file dell'app:xcrun simctl get_app_container booted my.app.id data
hyperknot,

77

iOS 8

dispositivi

~/Library/Developer/CoreSimulator/Devices

applicazioni

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

8
Per determinare la tua corrente {{Device Code}}}, un modo semplice è aprire il simulatore desiderato in Xcode, quindi in Finder ordinare la ~/Library/Developer/CoreSimulator/Devices/directory per Date Modified. La più recente è quella che desideri.
Stan James,

2
Per i dati dell'applicazione: ~ / Library / Developer / CoreSimulator / Devices / {{Device Code}} / data / Containers / Data / Application / {{ID applicazione}}
Bjørn Egil,

In realtà, puoi vedere {{Device Code}}in Hardware> Dispositivo> Gestisci dispositivi ...
Filius Patris il

30

Apri il programma "Activity Monitor", cerca la tua app (solo il nome dell'app, non il simulatore), fai clic su "Informazioni" e apri "Apri file e porte". Copia la seconda voce (qualcosa del genere /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). Questa è l'app in esecuzione, mentre <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/è il bundle e <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*la cartella sandbox.

Se lo passi open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"al terminale, la cartella si aprirà nel Finder.

Sembra complicato ma non lo è.


Buon punto! In particolare, non è necessario andare .appa vedere un filesystem dell'applicazione.
Yevhen Dubinin,

Ottimo suggerimento .. Spero davvero che ci sia uno script o una piccola utility per aiutare con questo .. Ogni dispositivo iOS emulato come una cartella completamente diversa sembra .. La struttura delle cartelle è dappertutto nella nuova versione .. :(
Markive

risposta eccellente, specialmente quando il percorso è cambiato con le versioni Xcode
rgkobashi,

21

Facile. Veloce. Xcode 10+.

  1. Usa print(NSHomeDirectory())e copia il percorso.
  2. Apri l' app Finder e premiShift+Cmd+G
  3. Incolla il percorso copiato e premi GO

L'alternativa a 1. è prendere un breakpoint e farlo po NSHomeDirectory()in console.


Dove posso eseguire il passaggio 1?
Carson Holzheimer,

1
@CarsonHolzheimer nel tuo codice, ad esempio nel viewDidLoadtuo ViewController. forse avrei dovuto scrivere non "correre" ma qualcos'altro. Grazie!
Tung Fam,

18

basato sulla risposta di zsero

Dettagli

macOS 10.13.1

Soluzione 1

Eseguire la seguente riga nel terminale

Modello

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

Campione completo

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Identificatore bundle"

inserisci qui la descrizione dell'immagine

Caratteristiche della soluzione 1

  • aprire il file per ottenere la directory del simulatore di app

Soluzione 2

Crea uno script bash con un nome per l'app e il codice:

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

inserisci qui la descrizione dell'immagine

Caratteristiche della soluzione 2

  • aprire il file per ottenere la directory del simulatore di app
  • rinominare il file per ottenere un'altra directory del simulatore dell'app

Risultato

inserisci qui la descrizione dell'immagine


Sembra che tu debba aggiungere "Finder" alla fine della stringa "Full Sample".
phantom_2


7

Se si desidera automatizzare il recupero della posizione o utilizzare quella cartella negli script, è possibile ottenere la posizione precisa da un simulatore in esecuzione con il comando seguente:

xcrun simctl get_app_container booted my.app.id data

2

Vecchio post, ma penso che valga la pena menzionare i titolari di sim per trovare i file del simulatore. È un elemento della barra dei menu che tiene traccia delle app del simulatore e ti consente di accedere direttamente alle loro cartelle e al loro contenuto. È fantastico.

(risposta originale qui: https://stackoverflow.com/a/26557165/377384 )


1

Sulla base della risposta di @zsero, ho creato un breve bashscript che apre direttamente la cartella del simulatore dell'ID dell'applicazione. Molto maneggevole!

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

Quindi basta

openappfolder.sh com.bundle.id

👍


1

Per Swift 4.2 e versioni successive, inserisci qualcosa come il seguente codice:

#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

... in una posizione del codice sorgente come:

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

Utilizzare il percorso risultante con cdo opensulla riga comandi del terminale. Oppure, incolla il percorso nel shift-cmd-Gprompt del Finder "Vai alla cartella ...".

Risposta correlata che include le versioni linguistiche precedenti: Percorso directory dei documenti di iOS 8 Beta Simulator


0

Su Xcode versione 8.2.1 (8C1002) ho trovato i file .app installati sul simulatore in questo percorso: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator


0

in primo luogo, ottenere l'elenco dei simulatori con ID dispositivo dal terminale

  1. strumenti-dispositivi
  2. xcrun simctl list

Quindi vai a mettere l'ID del dispositivo sotto il percorso. otterrai un file system specifico per il simulatore ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.