Czy jest jakiś sposób, aby zobaczyć system plików w symulatorze iOS?

170

Czy jest jakiś sposób na przeglądanie systemu plików aktualnie działającego lub właśnie zabitego symulatora iOS? Zadowoliłbym się, że będę mógł zobaczyć pliki konkretnej aplikacji, jeśli jest na to sposób.

Zauważ, że nie chcę robić tego programowo. Chcę zobaczyć / otworzyć pliki w Finderze.

Chris Williams
źródło

Odpowiedzi:

232

AKTUALIZACJA: Od iOS 8:

~ / Library / Developer / CoreSimulator / Devices

Lokalizacja była:

~ / Library / Application Support / iPhone Simulator

Miał katalogi dla wszystkich modeli symulatorów (4.0, 4.1, 5.0 itd.), Które kiedykolwiek uruchomiłeś, przejdź do tego, z którego uruchamiasz w Xcode.

Będąc w folderze, przejdź do aplikacji, wybierz opcję Finder, która pokazuje datę plików, i sortuj według daty. Twoja aplikacja będzie najnowsza, ponieważ właśnie zmieniła katalog ...

W katalogu znajduje się wszystko, co jest związane z Twoją aplikacją. Możesz nawet upuszczać tam pliki między uruchomieniami, aby na przykład powrócić do przechowywanej bazy danych w znanym stanie ...

Chodzę tam wystarczająco często, zachowując katalog iPhone Simulator na pasku bocznym Findera.

Zwróć uwagę, że w systemie iOS8 foldery symulatora znajdują się w zupełnie innym katalogu - w rzeczywistości podzielone na kilka katalogów, z nazwami folderów dla plików specyficznych dla aplikacji, które zmieniają się przy każdym uruchomieniu aplikacji.

Kendall Helmstetter Gelner
źródło
20
Aby zobaczyć folder ~ / Library w Lion, musisz uruchomić to polecenie w Terminalu: chflags nohidden ~ / Library /
Dan J
9
Możesz także nacisnąć klawisz opcji podczas przeglądania Gomenu Findera
Wayne
3
Używam ⌘⇧G z Findera. To szybsze niż otwieranie terminala na płytę CD.
Jacob Pritchett
3
Przytrzymaj „
Option
3
Znalezienie pliku konkretnej aplikacji jest prawie niemożliwe między losowymi skrótami, użyj tego polecenia, aby faktycznie dostać się do plików aplikacji:xcrun simctl get_app_container booted my.app.id data
hyperknot
77

iOS 8

Urządzenia

~/Library/Developer/CoreSimulator/Devices

Aplikacje

~/Library/Developer/CoreSimulator/Devices/{{Device Code}}/data/Containers/Bundle/
Mohsen
źródło
8
Aby określić aktualny {{Device Code}}}, prostym sposobem jest otwarcie żądanego symulatora w Xcode, a następnie w Finderze posortuj ~/Library/Developer/CoreSimulator/Devices/katalog według Date Modified. Najnowsze to ten, którego potrzebujesz.
Stan James
2
Dane aplikacji: ~ / Library / Developer / CoreSimulator / Devices / {{Device Code}} / data / Containers / Data / Application / {{Application Id}}
Bjørn Egil,
Właściwie możesz zobaczyć {{Device Code}}w Sprzęt> Urządzenie> Zarządzaj urządzeniami ...
Filius Patris
30

Otwórz program „Monitor aktywności”, wyszukaj swoją aplikację (tylko nazwę aplikacji, a nie symulator), kliknij „Informacje” i otwórz „Otwórz pliki i porty”. Skopiuj drugi wpis (coś w stylu /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). To jest uruchomiona aplikacja, podczas gdy <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/jest pakietem i<...>/B97A9504-0FA5-4826-BB6D-A2335A676459/* folder w piaskownicy.

Jeśli przekażesz to jako open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"terminalowi, folder otworzy się w Finderze.

Brzmi skomplikowanie, ale tak nie jest.

vikingosegundo
źródło
Słuszna uwaga! W szczególności nie musisz iść do, .appaby zobaczyć system plików swojej aplikacji.
Yevhen Dubinin
Świetna sugestia ... Naprawdę mam nadzieję, że istnieje skrypt lub małe narzędzie, które może w tym pomóc. Wydaje się, że każde urządzenie iOS jest emulowane jako zupełnie inny folder .. Struktura folderów jest wszędzie w nowej wersji .. :(
Markive
doskonała odpowiedź, zwłaszcza gdy trasa zmienia się wraz z wersjami Xcode
rgkobashi
21

Łatwo. Szybki. Xcode 10+.

  1. Użyj print(NSHomeDirectory())i skopiuj ścieżkę.
  2. Otwórz aplikację Finder i naciśnijShift+Cmd+G
  3. Wklej skopiowaną ścieżkę i naciśnij GO

Alternatywą dla 1. jest złapanie punktu przerwania i zrobienie tego po NSHomeDirectory()w konsoli.

Tung Fam
źródło
Gdzie mam uruchomić krok 1?
Carson Holzheimer,
1
@CarsonHolzheimer w Twoim kodzie, na przykład w viewDidLoadTwoim ViewController. może powinienem był napisać nie „biegnij”, ale coś innego. dzięki!
Tung Fam
18

na podstawie odpowiedzi zerowej

Detale

macOS 10.13.1

Rozwiązanie 1

Uruchom następującą linię w terminalu

Szablon

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

Pełna próbka

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Identyfikator pakietu"

wprowadź opis obrazu tutaj

Cechy rozwiązania 1

  • otwórz plik, aby uzyskać katalog symulatora aplikacji

Rozwiązanie 2

Utwórz skrypt bash z nazwą swojej aplikacji i kodem:

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

wprowadź opis obrazu tutaj

Cechy rozwiązania 2

  • otwórz plik, aby uzyskać katalog symulatora aplikacji
  • Zmień nazwę pliku, aby uzyskać inny katalog symulatora aplikacji

Wynik

wprowadź opis obrazu tutaj

Wasilij Bodnarchuk
źródło
Wygląda na to, że musisz dodać „Finder” na końcu ciągu „Full Sample”.
phantom_2
7

Jeśli chcesz zautomatyzować pobieranie lokalizacji lub używać tego folderu w skryptach, możesz uzyskać dokładną lokalizację z uruchomionego symulatora za pomocą następującego polecenia:

xcrun simctl get_app_container booted my.app.id data
hyperknot
źródło
2

Stary post, ale myślę, że warto wspomnieć o SimPholderach, aby znaleźć pliki symulatora. Jest to element paska menu, który śledzi aplikacje symulatora i pozwala przejść bezpośrednio do ich folderów i zawartości. To jest super niesamowite.

(oryginalna odpowiedź tutaj: https://stackoverflow.com/a/26557165/377384 )

lindon fox
źródło
1

Opierając się na odpowiedzi @zsero, stworzyłem krótki bashskrypt, który bezpośrednio otwiera folder symulatora identyfikatora twojej aplikacji. Bardzo przydatne!

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

Wtedy po prostu

openappfolder.sh com.bundle.id

👍

Jaskółka oknówka
źródło
1

W przypadku Swift 4.2 i nowszych umieść coś takiego jak następujący kod:

#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

... w lokalizacji kodu źródłowego, takiej jak:

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

Użyj powstałej ścieżki z cdlub openw wierszu poleceń terminala. Lub wklej ścieżkę w oknie shift-cmd-GFindera „Idź do folderu…”.

Powiązana odpowiedź, która obejmuje starsze wersje językowe: Ścieżka do katalogu dokumentów w iOS 8 Beta Simulator

l - marc l
źródło
0

W Xcode w wersji 8.2.1 (8C1002) znalazłem pliki .app zainstalowane na symulatorze w tej ścieżce: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator

JoxieMedina
źródło
0

najpierw pobierz listę symulatorów z identyfikatorem urządzenia z terminala

  1. przyrządy - urządzenia
  2. Lista xcrun simctl

Następnie idź umieść identyfikator urządzenia pod ścieżką. otrzymasz określony system plików symulatora ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Muhammad Numan
źródło