Existe alguma maneira de ver o sistema de arquivos no simulador do iOS?

170

Existe alguma maneira de navegar no sistema de arquivos de um simulador iOS em execução ou acabado de matar? Eu gostaria de ver os arquivos de um aplicativo específico, se houver uma maneira de fazer isso.

Observe que eu não quero fazer isso programaticamente. Quero ver / abrir os arquivos no Finder.

Chris Williams
fonte

Respostas:

232

ATUALIZAÇÃO: Desde o iOS 8:

~ / Biblioteca / Desenvolvedor / CoreSimulator / Devices

O local costumava ser:

~ / Biblioteca / Suporte a aplicativos / iPhone Simulator

Ele tinha diretórios para todos os modelos de simuladores (4.0, 4.1, 5.0, etc) que você já executou, vá para o que você está executando no Xcode.

Uma vez em uma pasta, vá para Aplicativos, escolha a opção Localizador que mostra a data dos arquivos e classifique por data. Sua aplicação será a mais recente, pois acabou de alterar o diretório ...

Dentro do diretório está tudo relacionado ao seu aplicativo. Você pode até soltar arquivos entre as execuções, para reverter para um banco de dados armazenado em um estado conhecido, por exemplo ...

Eu vou lá com bastante frequência, mantenho o diretório do iPhone Simulator na barra lateral do Finder.

Observe que, com o iOS8, as pastas do simulador estão em um diretório totalmente diferente - realmente dividido em alguns diretórios, com nomes de pastas para arquivos específicos do aplicativo que mudam toda vez que você executa o aplicativo.

Kendall Helmstetter Gelner
fonte
20
Para ver a pasta ~ / Library em Lion você precisa executar este comando no Terminal: chflags nohidden ~ / Library /
Dan J
9
Você também pode pressionar a tecla de opção enquanto visualiza Finder GoMenu
Wayne
3
Eu uso o ⌘⇧G do Finder. É mais rápido do que abrir o Terminal no cd.
precisa
3
Mantenha pressionada 'option' e pressione 'Go' na barra de menus do localizador
Matjan
3
Encontrar o arquivo de um aplicativo específico é quase impossível entre os hashes aleatórios, use este comando para realmente começar a arquivos do aplicativo:xcrun simctl get_app_container booted my.app.id data
hyperknot
77

iOS 8

Aparelhos

~/Library/Developer/CoreSimulator/Devices

Formulários

~/Library/Developer/CoreSimulator/Devices/{{Device Code}}/data/Containers/Bundle/
Mohsen
fonte
8
Para determinar sua atual {{Device Code}}}, uma maneira fácil é abrir o simulador desejado no Xcode e, em seguida, no Finder, classifique o ~/Library/Developer/CoreSimulator/Devices/diretório por Date Modified. Mais recente é o que você deseja.
Stan James
2
Para os dados do aplicativo: ~ / Library / Developer / CoreSimulator / Devices / {{Device Code}} / data / Containers / Data / Application / {{Application Id}}
Bjørn Egil
Na verdade, você pode ver {{Device Code}}em Hardware> Dispositivo> Gerenciar dispositivos ...
Filius Patris
30

Abra o programa "Activity Monitor", procure seu aplicativo (apenas o nome do aplicativo, não o simulador), clique em "Informações" e abra "Abrir arquivos e portas". Copie a segunda entrada (algo como /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). Este é o aplicativo em execução, enquanto <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/é o pacote e <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*a pasta na caixa de areia.

Se você passar isso open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"para o terminal, a pasta será aberta no Finder.

Parece complicado, mas não é.

vikingosegundo
fonte
Bom ponto! Em particular, você não precisa acessar o .appsistema de arquivos do seu aplicativo.
Yevhen Dubinin
Ótima sugestão .. Realmente espero que exista um script ou pouca utilidade para ajudar com isso .. Cada dispositivo iOS emulado como uma pasta completamente diferente parece .. A estrutura da pasta está em todo o lugar na nova versão .. :(
Markive
resposta excelente, especialmente quando a rota tem mudança com as versões do Xcode
rgkobashi
21

Fácil. Rápido. Xcode 10+.

  1. Use print(NSHomeDirectory())e copie o caminho.
  2. Abra o aplicativo Finder e pressioneShift+Cmd+G
  3. Cole o caminho copiado e pressione GO

A alternativa para 1. é pegar um ponto de interrupção e fazer po NSHomeDirectory()no console.

Tung Fam
fonte
Onde eu executo a etapa 1?
Carson Holzheimer
1
@CarsonHolzheimer no seu código, por exemplo, no viewDidLoadseu ViewController. talvez eu devesse ter escrito não "correr", mas outra coisa. obrigado!
Tung Fam
18

baseado na resposta zsero

Detalhes

macOS 10.13.1

Solução 1

Execute a seguinte linha no terminal

Modelo

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

Amostra Completa

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Identificador de pacote"

insira a descrição da imagem aqui

Recursos da solução 1

  • abrir arquivo para obter o diretório do simulador de aplicativos

Solução 2

Crie um script bash com um nome do seu aplicativo e código:

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

insira a descrição da imagem aqui

Recursos da solução 2

  • abrir arquivo para obter o diretório do simulador de aplicativos
  • renomear arquivo para obter outro diretório do simulador de aplicativo

Resultado

insira a descrição da imagem aqui

Vasily Bodnarchuk
fonte
Parece que você precisa adicionar "Finder" no final da string "Full Sample".
Phantom_2 3/0318
7

Se você deseja automatizar a obtenção do local ou usar essa pasta nos scripts, é possível obter o local exato de um simulador em execução com o seguinte comando:

xcrun simctl get_app_container booted my.app.id data
hyperknot
fonte
2

Post antigo, mas acho que vale a pena mencionar os SimPholders para encontrar seus arquivos do Simulator. É um item da barra de menus que rastreia seus aplicativos de simulador e permite que você vá diretamente para suas pastas e conteúdo. É super incrível.

(resposta original aqui: https://stackoverflow.com/a/26557165/377384 )

lindon fox
fonte
1

Com base na resposta @zsero, criei um bashscript curto que abre diretamente a pasta do simulador do seu ID de aplicativo. Muito conveniente!

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

Então apenas

openappfolder.sh com.bundle.id

👍

Martin
fonte
1

Para o Swift 4.2 e superior, coloque algo como o seguinte código:

#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

... em um local de código-fonte, como:

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

Use o caminho resultante com cdou openna linha de comando do terminal. Ou cole o caminho no shift-cmd-Gprompt do Finder "Ir para pasta ...".

Resposta relacionada que inclui versões de idiomas mais antigas: Caminho do diretório de documentos do iOS 8 Beta Simulator

l --marc l
fonte
0

No Xcode versão 8.2.1 (8C1002), encontrei os arquivos .app instalados no simulador neste caminho: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator

JoxieMedina
fonte
0

primeiro, obtenha a lista de simuladores com o ID do dispositivo no terminal

  1. instrumentos -s dispositivos
  2. xcrun simctl list

Em seguida, coloque o ID do dispositivo abaixo do caminho. você receberá um sistema de arquivos de simulador específico ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Muhammad Numan
fonte