Есть ли способ увидеть файловую систему на симуляторе iOS?


170

Есть ли способ просмотреть файловую систему запущенного или просто убитого симулятора iOS? Я бы согласился на возможность просмотра файлов конкретного приложения, если есть способ сделать это.

Обратите внимание, что я не хочу делать это программно. Я хочу видеть / открывать файлы в Finder.

Ответы:


232

ОБНОВЛЕНИЕ: начиная с iOS 8:

~ / Library / Developer / CoreSimulator / Устройства

Местоположение раньше было:

~ / Библиотека / Поддержка приложений / iPhone Simulator

В нем были каталоги для всех моделей симуляторов (4.0, 4.1, 5.0 и т. Д.), Которые вы когда-либо запускали, перейдите к той, с которой вы работаете, в Xcode.

Попав в папку, перейдите в Приложения, выберите опцию Finder, которая показывает дату для файлов, и сортируйте по дате. Ваше приложение будет самым последним, поскольку оно только что изменило каталог ...

Внутри каталога находится все, что связано с вашим приложением. Вы даже можете помещать туда файлы между запусками, чтобы, например, вернуться к сохраненной базе данных в известном состоянии ...

Я хожу туда достаточно часто, храню каталог iPhone Simulator на боковой панели Finder.

Обратите внимание, что в iOS8 папки симулятора находятся в совершенно другом каталоге - в действительности они разделены на несколько каталогов с именами папок для конкретных файлов приложения, которые меняются при каждом запуске приложения.


20
Чтобы увидеть папку ~ / Library в Lion, вам нужно выполнить эту команду в терминале: chflags nohidden ~ / Library /
Dan J

9
Вы также можете нажать клавишу выбора во время просмотра Goменю Finder
Уэйн,

3
Я использую ⌘⇧G из Finder. Это быстрее, чем открыть терминал для CD.
Джейкоб Притчетт

3
Удерживайте «option» и нажмите «Go» в
строке

3
Найти произвольный файл приложения между случайными хешами практически невозможно, используйте эту команду, чтобы фактически добраться до файлов приложения:xcrun simctl get_app_container booted my.app.id data
hyperknot

77

iOS 8

приборы

~/Library/Developer/CoreSimulator/Devices

Приложения

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

8
Чтобы определить свой текущий {{Device Code}}}, простой способ - открыть нужный симулятор в Xcode, а затем в Finder отсортировать ~/Library/Developer/CoreSimulator/Devices/каталог по Date Modified. Самый последний - тот, который вы хотите.
Стэн Джеймс

2
Для данных приложения: ~ / Библиотека / Разработчик / CoreSimulator / Устройства / {{Код устройства}} / данные / Контейнеры / Данные / Приложение / {{Application Id}}
Бьёрн Эгиль

На самом деле, вы можете увидеть {{Device Code}}в Аппаратное обеспечение> Устройство> Управление устройствами ...
Филиус Патрис

30

Откройте программу «Монитор активности», найдите свое приложение (только имя приложения, а не симулятор), нажмите «Информация» и откройте «Открыть файлы и порты». Скопируйте вторую запись (что-то вроде /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.

Звучит сложно, но это не так.


Хорошая точка зрения! В частности, вам не нужно заходить, .appчтобы увидеть файловую систему вашего приложения.
Евгений Дубинин

Отличное предложение .. Действительно надеюсь, что есть скрипт или небольшая утилита, чтобы помочь с этим .. Каждое устройство iOS эмулируется как совершенно другая папка, как кажется .. Структура папки повсюду в новой версии .. :(
Markive

отличный ответ, особенно когда маршрут изменился с версиями Xcode
rgkobashi

21

Легко. Быстро. Xcode 10+.

  1. Используйте print(NSHomeDirectory())и скопируйте путь.
  2. Откройте приложение Finder и нажмитеShift+Cmd+G
  3. Вставьте скопированный путь и нажмите GO

Альтернативой для 1. является перехват точки останова и выполнение po NSHomeDirectory()в консоли.


Где я могу запустить шаг 1?
Карсон

1
@CarsonHolzheimer в вашем коде, например, в viewDidLoadвашем ViewController. возможно я должен был написать не "бежать", а что-то еще. Спасибо!
Tung Fam

18

на основании ответа зеро

подробности

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 = "Идентификатор пакета"

введите описание изображения здесь

Особенности решения 1

  • открыть файл, чтобы получить каталог симулятора приложений

Решение 2

Создайте bash-скрипт с именем вашего приложения и кодом:

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

введите описание изображения здесь

Особенности решения 2

  • открыть файл, чтобы получить каталог симулятора приложений
  • переименуйте файл, чтобы получить другой каталог симулятора приложений

результат

введите описание изображения здесь


Кажется, вам нужно добавить «Finder» в конце строки «Full Sample».
phantom_2


7

Если вы хотите автоматизировать получение местоположения или использовать эту папку в сценариях, вы можете получить точное местоположение из запущенного симулятора с помощью следующей команды:

xcrun simctl get_app_container booted my.app.id data

2

Старый пост, но я думаю, что стоит упомянуть SimPholder, чтобы найти ваши файлы симулятора. Это пункт меню, который отслеживает ваши приложения-симуляторы и позволяет вам напрямую переходить к их папкам и содержимому. Это супер круто.

(оригинальный ответ здесь: https://stackoverflow.com/a/26557165/377384 )


1

Основываясь на ответе @zsero, я сделал короткий bashскрипт, который напрямую открывает папку симулятора вашего идентификатора приложения. Очень кстати!

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

👍


1

Для 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
}

Используйте полученный путь с cdили openв командной строке терминала. Или вставьте путь в shift-cmd-Gподсказку «Перейти к папке…».

Связанный ответ, который включает более старые языковые версии: Путь к каталогу документов iOS 8 Beta Simulator


0

На Версии 8.2.1 XCode (8C1002) я нашел файлы .app, установленные на симуляторе в этом пути: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator


0

во-первых, получить список симуляторов с идентификатором устройства из терминала

  1. инструменты-устройства
  2. xcrun simctl list

Затем введите идентификатор устройства ниже пути. вы получите конкретную симулятор файловой системы ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.