Чи є спосіб побачити файлову систему на тренажері iOS?


170

Чи є спосіб переглядати файлову систему щойно запущеного або щойно вбитого симулятора iOS? Я б погодився бачити файли певного додатка, якщо є спосіб це зробити.

Зауважте, що я не хочу цього робити систематично. Я хочу побачити / відкрити файли в Finder.

Відповіді:


232

ОНОВЛЕННЯ: З iOS 8:

~ / Бібліотека / Розробник / CoreSimulator / Пристрої

Раніше було місцезнаходження:

~ / Бібліотека / Підтримка програм / iPhone Simulator

У ньому були каталоги для всіх моделей тренажерів (4.0, 4.1, 5.0 тощо), з яких ви коли-небудь працювали, перейдіть до тієї, з якої ви працюєте в Xcode.

Опинившись у папці, перейдіть до «Програми», оберіть опцію «Finder», що показує дату файлів, і сортуйте за датою. Ваша заявка буде останньою, оскільки вона просто змінила каталог ...

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

Я заходжу туди досить часто, я зберігаю каталог iPhone Simulator у моїй бічній панелі Finder.

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


20
Щоб побачити папку ~ / Бібліотека в Леві, вам потрібно запустити цю команду в Терміналі: chflags nohidden ~ / Бібліотека /
Dan J

9
Ви також можете натиснути клавішу опції під час перегляду Goменю Finder
Wayne

3
Я використовую ⌘⇧G від Finder. Це швидше, ніж відкрити термінал на компакт-диск.
Якоб Притчетт

3
Утримуйте "варіант" і натисніть "Перейти" у меню в пошуку
Мат'ян,

3
Знайти файл конкретного додатка майже неможливо між випадковими хешами, використовуйте цю команду, щоб насправді дістатися до файлів програми:xcrun simctl get_app_container booted my.app.id data
гіперкнот

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 / Пристрої / {{Код пристрою}} / Дані / Контейнери / Дані / Приклад / {{Ідентифікатор програми}}
Bjørn Egil

Насправді ви можете побачити {{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 імітується як зовсім інша папка, здається .. Структура папок у новій версії
повсюдно

відмінна відповідь, особливо коли маршрут змінився з версіями 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

на основі zsero відповіді

Деталі

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

Створіть баш-скрипт з назвою програми та кодом:

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

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

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

  • відкрити файл, щоб отримати каталог симулятора додатків
  • Перейменуйте файл, щоб отримати інший каталог симулятора додатків

Результат

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


Здається, вам потрібно додати "Finder" в кінці рядка "Повний зразок".
phantom_2


7

Якщо ви хочете автоматизувати отримання місця розташування або використовувати цю папку для створення сценаріїв, ви можете отримати точне розташування з запущеного симулятора за допомогою наступної команди:

xcrun simctl get_app_container booted my.app.id data

2

Стара публікація, але я думаю, що варто згадати SimPholders, щоб знайти свої файли Simulator. Це пункт рядка меню, який відстежує ваші програми тренажера та дозволяє безпосередньо переходити до їх папок та вмісту. Це супер приголомшливо.

(оригінальна відповідь тут: 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підказку "Find To Folder ...".

Відповідна відповідь, що включає старіші мовні версії: Довідник документа документа Шлях iOS 8 Beta Simulator


0

У Xcode версії 8.2.1 (8C1002) я знайшов файли .app, встановлені на тренажері на цьому шляху: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator


0

спочатку отримайте список тренажера з ідентифікатором пристрою з терміналу

  1. інструменти -з приладами
  2. xcrun simctl список

Потім перейдіть поставити ідентифікатор пристрою нижче шляху. ви отримаєте конкретну файлову систему симулятора ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.