Có cách nào để xem hệ thống tệp trên trình giả lập iOS không?


170

Có cách nào để duyệt hệ thống tệp của trình giả lập iOS hiện đang chạy hoặc vừa bị giết không? Tôi sẽ giải quyết để có thể xem các tệp của một ứng dụng cụ thể nếu có cách để làm điều đó.

Lưu ý rằng tôi không muốn làm điều này theo chương trình. Tôi muốn xem / mở các tệp trong Finder.

Câu trả lời:


232

CẬP NHẬT: Kể từ iOS 8:

~ / Thư viện / Nhà phát triển / CoreSimulator / Thiết bị

Vị trí được sử dụng là:

~ / Thư viện / Hỗ trợ ứng dụng / Trình mô phỏng iPhone

Nó có các thư mục cho tất cả các mô hình giả lập (4.0, 4.1, 5.0, v.v.) mà bạn đã từng chạy, đi đến cái bạn đang chạy trong Xcode.

Khi ở trong thư mục, hãy truy cập Ứng dụng, chọn tùy chọn Finder hiển thị ngày cho các tệp và sắp xếp theo ngày. Ứng dụng của bạn sẽ là mới nhất vì nó vừa thay đổi thư mục ...

Bên trong thư mục là mọi thứ liên quan đến ứng dụng của bạn. Bạn thậm chí có thể thả các tệp trong đó giữa các lần chạy, để trở lại cơ sở dữ liệu được lưu trữ trong trạng thái đã biết chẳng hạn ...

Tôi đến đó thường xuyên đủ để tôi giữ thư mục iPhone Simulator trong thanh bên Finder của tôi.

Lưu ý rằng với iOS8, các thư mục giả lập nằm trong một thư mục hoàn toàn khác - thực sự được chia thành một vài thư mục, với tên thư mục cho các tệp cụ thể của ứng dụng thay đổi mỗi khi bạn chạy ứng dụng.


20
Để xem thư mục ~ / Library trong Lion, bạn cần chạy lệnh này trong Terminal: chflags nohidden ~ / Library /
Dan J

9
Bạn cũng có thể bấm phím tùy chọn trong khi xem Gomenu của Người tìm kiếm
Wayne

3
Tôi sử dụng ⌘⇧G từ Finder. Nó nhanh hơn việc mở Terminal sang cd.
Jacob Pritchett

3
Giữ phím 'tùy chọn' và nhấn 'Đi' trong thanh công cụ tìm kiếm
Matjan

3
Tìm tệp của một ứng dụng cụ thể gần như không thể giữa các giá trị băm ngẫu nhiên, hãy sử dụng lệnh này để thực sự truy cập vào các tệp của ứng dụng:xcrun simctl get_app_container booted my.app.id data
hyperjack

77

iOS 8

Thiết bị

~/Library/Developer/CoreSimulator/Devices

Các ứng dụng

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

8
Để xác định hiện tại của bạn {{Device Code}}}, một cách dễ dàng là mở trình giả lập mong muốn trong Xcode, sau đó trong Finder sắp xếp ~/Library/Developer/CoreSimulator/Devices/thư mục theo Date Modified. Gần đây nhất là một trong những bạn muốn.
Stan James

2
Đối với dữ liệu ứng dụng: ~ / Library / Developer / CoreSimulator / Devices / {{Mã thiết bị}} / data / Container / Data / Application / {{Application Id}}
Bjørn Egil

Trên thực tế, bạn có thể thấy {{Device Code}}trong Phần cứng> Thiết bị> Quản lý thiết bị ...
Filius Patris

30

Mở chương trình "Trình giám sát hoạt động", tìm kiếm Ứng dụng của bạn (chỉ tên ứng dụng, không phải trình giả lập), nhấp vào "Thông tin" và mở "Mở tệp và cổng". Sao chép mục thứ hai (một cái gì đó như /Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp). Đây là ứng dụng đang chạy, trong khi <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/là gói và <...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*thư mục hộp cát.

Nếu bạn chuyển cái này open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"đến terminal, thư mục sẽ mở trong Finder.

Nghe có vẻ phức tạp nhưng không phải.


Điểm tốt! Cụ thể, bạn không cần phải đi .appxem hệ thống tập tin của ứng dụng.
Yevhen Dubinin

Gợi ý tuyệt vời .. Thực sự hy vọng có một tập lệnh hoặc tiện ích nhỏ để trợ giúp điều này .. Mỗi thiết bị iOS được mô phỏng như một thư mục hoàn toàn khác nhau .. Cấu trúc thư mục có ở khắp mọi nơi trong phiên bản mới .. :(
Markive

câu trả lời tuyệt vời, đặc biệt khi tuyến đường thay đổi với các phiên bản Xcode
rgkobashi

21

Dễ dàng. Nhanh. Xcode 10+.

  1. Sử dụng print(NSHomeDirectory())sao chép đường dẫn.
  2. Mở ứng dụng Finder và nhấnShift+Cmd+G
  3. Dán đường dẫn đã sao chép và nhấn GO

Thay thế cho 1. là bắt một điểm dừng và làm po NSHomeDirectory()trong giao diện điều khiển.


Tôi chạy bước 1 ở đâu?
Carson Holzheimer

1
@CarsonHolzheimer trong mã của bạn, ví dụ như trong viewDidLoadcủa bạn ViewController. có lẽ tôi nên viết không phải "chạy" mà là một cái gì đó khác. cảm ơn!
Tung Fam

18

dựa trên câu trả lời của zsero

Chi tiết

macOS 10.13.1

Giải pháp 1

Chạy dòng sau trong terminal

Bản mẫu

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

Mẫu đầy đủ

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

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP = "Số nhận dạng gói"

nhập mô tả hình ảnh ở đây

Các tính năng của giải pháp 1

  • mở tập tin để có được thư mục giả lập ứng dụng

Giải pháp 2

Tạo một tập lệnh bash với tên của ứng dụng và mã của bạn:

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

nhập mô tả hình ảnh ở đây

Các tính năng của giải pháp 2

  • mở tập tin để có được thư mục giả lập ứng dụng
  • đổi tên tập tin để lấy thư mục giả lập ứng dụng khác

Kết quả

nhập mô tả hình ảnh ở đây


Có vẻ như bạn cần thêm "Finder" vào cuối chuỗi "Full Sample".
ph Phantom_2 ngày


7

Nếu bạn muốn tự động hóa vị trí hoặc sử dụng thư mục đó trong tập lệnh, bạn có thể lấy vị trí chính xác từ trình giả lập đang chạy bằng lệnh sau:

xcrun simctl get_app_container booted my.app.id data

2

Bài đăng cũ, nhưng tôi nghĩ rằng đáng để đề cập đến SimPholder để tìm các tệp Trình mô phỏng của bạn. Đây là một mục trên thanh menu theo dõi các ứng dụng giả lập của bạn và cho phép bạn truy cập trực tiếp vào các thư mục và nội dung của chúng. Nó siêu tuyệt vời.

(câu trả lời gốc tại đây: https://stackoverflow.com/a/26557165/377384 )


1

Dựa trên câu trả lời @zsero, tôi đã tạo một đoạn bashscript ngắn trực tiếp mở thư mục giả lập của id ứng dụng của bạn. Rất tiện dụng!

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

Sau đó chỉ

openappfolder.sh com.bundle.id

👍


1

Đối với Swift 4.2 trở lên, hãy đặt một cái gì đó giống như đoạn mã sau:

#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

... Trong một vị trí mã nguồn, chẳng hạn như:

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

Sử dụng đường dẫn kết quả có cdhoặc opentrên dòng lệnh đầu cuối. Hoặc, dán đường dẫn trong shift-cmd-Glời nhắc của Trình tìm kiếm "Chuyển đến thư mục".

Câu trả lời liên quan bao gồm các phiên bản ngôn ngữ cũ hơn: Đường dẫn thư mục tài liệu của iOS 8 Beta Simulator


0

Trên Xcode Phiên bản 8.2.1 (8C1002) tôi đã tìm thấy các tệp .app được cài đặt trên trình giả lập trong đường dẫn này: ~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator


0

đầu tiên, lấy danh sách giả lập với ID thiết bị từ thiết bị đầu cuối

  1. dụng cụ -s thiết bị
  2. danh sách xcrun simctl

Sau đó đi đặt id thiết bị bên dưới đường dẫn. bạn sẽ nhận được hệ thống tập tin giả lập cụ thể ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.