2014-09-11 44 views
10

Với những thay đổi mới nhất đối với xcode 6, có vẻ như tệp .app và thư mục tài liệu không còn nằm trong cùng thư mục trong thư mục trình mô phỏng iPhone.Xcode 6/iOS 8 Dữ liệu mô phỏng và tập lệnh thư mục bó

Trước đây, chúng ta có thể truy cập vào thư mục và tập tin .app tại

/Users/me/Library/Application Support/iPhone Simulator/7.1/Applications/SomeCrpyticNumber 

nhưng trong Xcode 6, thư mục giả lập là hoàn toàn khác nhau:

~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Bundle/CrypticNumber2/MyApp.app 

~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Data/CrypticNumber3/Documents  

trong đó CryptNumber 1,2 và 3 đều khác nhau. Có cách nào để tôi có thể nhận được thư mục Tài liệu tương ứng sau khi tôi tìm thấy thư mục chứa tệp .app không? Tôi "đang gặp rắc rối với điều này.

tại sao ...?

Nếu tôi đã xây dựng các ứng dụng trên một mô phỏng iOS 7, thư mục tài liệu và tập tin .app là trong cùng một thư mục ít nhất như trước đây, nhưng iOS 8 tách chúng

giải pháp duy nhất tôi có thể nghĩ ngay bây giờ là để ghép lên 2 thư mục mà có ngày tạo/sửa đổi mới nhất

Edit:..

trên một mặt lưu ý, công cụ này là rất hữu ích để tìm thư mục trình mô phỏng của bạn trên xcode 6 ngay bây giờ: http://simpholders.com/

+0

thử [this] (http://nsrover.wordpress.com/2014/11/28/ios8-simulator-documents-directory/) – NSRover

Trả lời

10

Điều này cũng đã làm tôi thất vọng. Tôi đã không thể giải quyết nó 100% nhưng tôi đã tạo ra một ứng dụng nhanh chóng và dơ bẩn để giúp đỡ một chút. Tôi luôn có thể tìm thấy thư mục thiết bị, nhưng tôi chưa tìm được cách để theo dõi các thư mục bó/hộp cát một cách đáng tin cậy. Nguồn: https://github.com/somegeekintn/SimDirs

Chỉnh sửa: Đã đi trước và bắt đầu quét mobile_installation.log để tìm thêm vị trí. Dường như tìm mọi thứ ngay bây giờ.

+0

Điều đó có vẻ tuyệt vời. Tôi cũng đang làm một cái gì đó tương tự như những gì bạn có ngoại trừ tôi không có GUI :) Ngay bây giờ, tôi sẽ chỉ sử dụng simulator_app = "$ (find" ~/Library/Developer/CoreSimulator/Devices "-name" $ project_name.app ")" \t full_path_to_app = "$ (dirname" $ ​​simulator_app ")" để tìm thư mục cho ứng dụng, nhưng tôi cho rằng chúng tôi muốn khớp ngày tạo thư mục này với một thư mục khác để tìm gói danh mục. – kevinl

+1

Bạn cũng có thể muốn root trong dữ liệu/Library/Logs/MobileInstallation/mobile_installation.log.0. Dường như ghi lại thông tin cài đặt và gỡ cài đặt ứng dụng. Phải là một kỷ lục lâu dài hơn về điều này ở đâu đó bạn nghĩ. –

+1

Tôi đang sử dụng tập lệnh khớp với ID gói với mã trong '.com.apple.mobile_container_manager.metadata.plist' - dường như đủ đáng tin cậy. –

1

Tôi gặp phải vấn đề tương tự khi tôi lưu trữ đường dẫn đầy đủ bằng cách sử dụng CoreData. Khi truy xuất đường dẫn đầy đủ, nó trả về null vì thư mục tài liệu UUID khác nhau mỗi khi ứng dụng khởi động lại. Sau đây là giải pháp của tôi:

  1. Đảm bảo chỉ lưu trữ đường dẫn tương đối của tài liệu/tệp trong CoreData. Ví dụ. lưu trữ "Files/image.jpg" thay vì "/Users/yourname/.../Applications/UUID/Document/Files/image.jpg".
  2. Sử dụng sau đây để lấy lại vị trí tài liệu ứng dụng:

    [[[NSFileManager defaultManager] URLsForDirectory: inDomains NSDocumentDirectory: NSUserDomainMask] lastObject];

  3. Ghép cả hai # 2 và # 1 để nhận đường dẫn đầy đủ của tài liệu/tệp bạn muốn truy xuất.
Bạn có thể tham khảo cho Apple Developer Lưu ý: https://developer.apple.com/library/ios/technotes/tn2406/_index.html

1

Có một plugin tuyệt vời cho Xcode, cho phép bạn mở thư mục cho bất kỳ ứng dụng nào bạn muốn. Được gọi là ZLGotoSandboxPlugin và bạn có thể cài đặt nó qua Alcatraz. Plugin này thêm menu phụ đặc biệt vào menu "Tệp" của Xcode (tôi đã ẩn một số tên ứng dụng ở đó): The plugin menu.

Tôi thấy nó khá thuận tiện.

Các vấn đề liên quan