Apakah ada cara untuk melihat sistem file pada simulator iOS?

170

Apakah ada cara untuk menelusuri sistem file dari simulator iOS yang sedang berjalan atau baru saja terbunuh? Saya setuju untuk dapat melihat file aplikasi tertentu jika ada cara untuk melakukan itu.

Perhatikan bahwa saya tidak ingin melakukan ini secara terprogram. Saya ingin melihat / membuka file di Finder.

Chris Williams
sumber

Jawaban:

232

PEMBARUAN: Sejak iOS 8:

~ / Perpustakaan / Pengembang / CoreSimulator / Perangkat

Lokasi dulu:

~ / Perpustakaan / Dukungan Aplikasi / iPhone Simulator

Itu memiliki direktori untuk semua model simulator (4.0, 4.1, 5.0, dll) yang pernah Anda jalankan, buka yang Anda jalankan dari dalam Xcode.

Setelah di folder, buka Aplikasi, pilih opsi Finder yang menunjukkan tanggal untuk file, dan urutkan berdasarkan tanggal. Aplikasi Anda akan menjadi yang terbaru karena baru saja mengubah direktori ...

Di dalam direktori adalah segala sesuatu yang berkaitan dengan aplikasi Anda. Anda bahkan dapat menjatuhkan file di sana di antara menjalankan, untuk mengembalikan kembali ke database yang tersimpan di negara yang dikenal misalnya ...

Saya sering pergi ke sana dan menyimpan direktori Simulator iPhone di bilah samping Finder saya.

Perhatikan bahwa dengan iOS8, folder simulator berada dalam direktori yang sama sekali berbeda - benar-benar terbagi menjadi beberapa direktori, dengan nama folder untuk file spesifik aplikasi yang berubah setiap kali Anda menjalankan aplikasi Anda.

Kendall Helmstetter Gelner
sumber
20
Untuk melihat folder ~ / Library di Lion Anda harus menjalankan perintah ini di Terminal: chflags nohidden ~ / Library /
Dan J
9
Anda juga dapat menekan tombol opsi sambil melihat Gomenu Finder's
Wayne
3
Saya menggunakan ⌘⇧G dari Finder. Ini lebih cepat daripada membuka Terminal ke cd.
Jacob Pritchett
3
Tahan 'opsi' dan tekan 'Go' di menubar in finder
Matjan
3
Menemukan file aplikasi tertentu hampir tidak mungkin di antara hash acak, gunakan perintah ini untuk benar-benar mendapatkan file aplikasi:xcrun simctl get_app_container booted my.app.id data
hyperknot
77

iOS 8

Perangkat

~/Library/Developer/CoreSimulator/Devices

Aplikasi

~/Library/Developer/CoreSimulator/Devices/{{Device Code}}/data/Containers/Bundle/
Mohsen
sumber
8
Untuk menentukan saat ini {{Device Code}}}, cara mudah adalah dengan membuka simulator yang diinginkan dalam Xcode, dan kemudian di Finder, sortir ~/Library/Developer/CoreSimulator/Devices/direktori berdasarkan Date Modified. Yang terbaru adalah yang Anda inginkan.
Stan James
2
Untuk data aplikasi: ~ / Library / Developer / CoreSimulator / Devices / {{Device Code}} / data / Containers / Data / Application / {{Id Aplikasi}}
Bjørn Egil
Sebenarnya, Anda dapat melihat {{Device Code}}di Perangkat Keras> Perangkat> Kelola Perangkat ...
Filius Patris
30

Buka program "Monitor Aktivitas", cari Aplikasi Anda (hanya nama aplikasi, bukan simulator), klik "Informasi" dan buka "Buka file dan port". Salin entri kedua (sesuatu seperti /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). Ini adalah aplikasi yang berjalan, sementara <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/bundel, dan <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*folder kotak pasir.

Jika Anda meneruskan ini open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"ke terminal, folder akan terbuka di Finder.

Kedengarannya rumit tapi tidak.

vikingosegundo
sumber
Poin bagus! Secara khusus, Anda tidak perlu pergi .appuntuk melihat sistem file aplikasi Anda.
Yevhen Dubinin
Saran bagus .. Sangat berharap ada skrip atau sedikit utilitas untuk membantu dengan ini .. Setiap perangkat iOS ditiru sebagai folder yang sama sekali berbeda sepertinya .. Struktur folder ada di semua tempat di versi baru .. :(
Markive
jawaban yang sangat baik, khususnya ketika rute telah berubah dengan versi Xcode
rgkobashi
21

Mudah. Cepat. Xcode 10+.

  1. Gunakan print(NSHomeDirectory())dan salin jalurnya.
  2. Buka aplikasi Finder dan tekanShift+Cmd+G
  3. Rekatkan jalur yang disalin dan tekan GO

Alternatif untuk 1. adalah menangkap breakpoint dan lakukan po NSHomeDirectory()di konsol.

Tung Fam
sumber
Di mana saya menjalankan langkah 1?
Carson Holzheimer
1
@CarsonHolzheimer dalam kode Anda, misalnya di viewDidLoadAnda ViewController. mungkin saya seharusnya menulis bukan "menjalankan" tetapi sesuatu yang lain. Terima kasih!
Tung Fam
18

berdasarkan jawaban zsero

Detail

macOS 10.13.1

Solusi 1

Jalankan baris berikut di terminal

Templat

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

Sampel Lengkap

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Bundle Identifier"

masukkan deskripsi gambar di sini

Fitur solusi 1

  • buka file untuk mendapatkan direktori aplikasi simulator

Solusi 2

Buat skrip bash dengan nama aplikasi dan kode Anda:

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

masukkan deskripsi gambar di sini

Fitur solusi 2

  • buka file untuk mendapatkan direktori aplikasi simulator
  • ganti nama file untuk mendapatkan direktori simulator aplikasi lain

Hasil

masukkan deskripsi gambar di sini

Bodnarchuk dengan mudah
sumber
Tampaknya Anda perlu menambahkan "Finder" di akhir string "Sampel Lengkap".
phantom_2
7

Jika Anda ingin secara otomatis mendapatkan lokasi atau menggunakan folder itu dalam skrip, Anda bisa mendapatkan lokasi yang tepat dari simulator yang sedang berjalan dengan perintah berikut:

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

Posting lama, tapi saya pikir perlu menyebutkan SimPholder untuk menemukan file Simulator Anda. Ini adalah item menu bar yang melacak aplikasi simulator Anda dan memungkinkan Anda untuk langsung pergi ke folder dan konten mereka. Sangat luar biasa.

(jawaban asli di sini: https://stackoverflow.com/a/26557165/377384 )

lindon fox
sumber
1

Berdasarkan jawaban @zsero, saya membuat bashskrip pendek yang langsung membuka folder simulator id aplikasi Anda. Sangat berguna!

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

Lalu saja

openappfolder.sh com.bundle.id

👍

Martin
sumber
1

Untuk Swift 4.2 dan lebih tinggi, tempatkan sesuatu seperti kode berikut:

#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

... di lokasi kode sumber seperti:

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

Gunakan jalur yang dihasilkan dengan cdatau openpada baris perintah terminal. Atau, rekatkan lintasan di shift-cmd-Gprompt Finder "Buka Folder ...".

Jawaban terkait yang mencakup versi bahasa yang lebih lama: Jalur Direktori Dokumen dari iOS 8 Beta Simulator

l --marc l
sumber
0

Pada Xcode Versi 8.2.1 (8C1002) saya menemukan file .app yang diinstal pada simulator di jalur ini: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator

JoxieMedina
sumber
0

pertama, dapatkan daftar simulator dengan ID perangkat dari terminal

  1. instrumen -s perangkat
  2. daftar simctl xcrun

Lalu pergi letakkan id perangkat di bawah jalur. Anda akan mendapatkan sistem file simulator khusus ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Muhammad Numan
sumber