2013-04-12 37 views
5

Tôi cần truy cập thư mục hộp cát cho ứng dụng được cài đặt trên thiết bị iOS, sử dụng dòng lệnh (không phải là gui) từ Mac hoặc Linux. Điều này là để giúp phát triển và thử nghiệm tự động hóa. Việc thả một tệp json vào hộp cát cho phép tôi đặt các tham số như các thông báo gỡ lỗi bổ sung và các khoảng thời gian làm mới nhỏ hơn.Truy cập dòng lệnh vào thư mục ứng dụng iOS (sandbox) từ Mac

Một công cụ như iFunBox hoạt động hoàn hảo nhưng chỉ là đồ họa, đòi hỏi nhiều nhấp chuột để thực hiện việc này. Email cho các nhà phát triển không được trả lời. Nó cũng không hỗ trợ AppleScript. Tôi đã tìm thấy một ứng dụng khác cung cấp một mô-đun Fuse, nhưng nó bật ra lỗi đặc biệt là nếu ứng dụng đã được gỡ cài đặt và sau đó cài đặt lại (để đặt lại về trải nghiệm người dùng lần đầu tiên). Tôi đã báo cáo sự cố cho nhà phát triển nhưng không có sự khắc phục nào về đường chân trời.

Những điều tôi cần phải làm là:

  • Kiểm tra xem một ứng dụng với một bó id cụ thể được cài đặt
  • Tạo Library/Caches thư mục/MYLIBNAME nếu nó không tồn tại
  • Sao chép một ~ 100 byte tệp json từ máy Mac đến thư mục đó
  • Nhận bản sao của tệp đó
  • Giải pháp chỉ hoạt động từ Linux cũng được chấp nhận quá
  • Các thiết bị không được bẻ khóa và tôi không muốn điều đó theo yêu cầu

Trong một số trường hợp, tôi không có mã nguồn cho ứng dụng vì nó là bên thứ ba sử dụng thư viện của tôi, do đó, biên soạn các phiên bản khác nhau của ứng dụng không thực tế.

Trả lời dưới đây trong nhiều nhận xét nhờ lxt. Tóm tắt là:

  • thư viện khác nhau và các chương trình liên quan đến libimobiledevice có thể giải quyết những vấn đề
    • Sử dụng iFuse để gắn một ứng dụng sandbox
    • Sử dụng idevicesyslog để xem giao diện điều khiển log
    • Sử dụng ideviceinstaller để cài đặt/gỡ cài đặt ứng dụng
  • Nhiều thư viện và chương trình khác nhau rams liên kết với libimobiledevice là vô cùng khó khăn nếu không phải là không thể biên dịch như là trên Linux hoặc Mac, và không có sự phân bố thống nhất của nguồn hoặc nhị phân
    • cho Ubuntu try libimobiledevice (có thể có 3 hậu tố), ideviceinstaller và libimobiledevice-utils gói
    • đối với Mac tìm kiếm libimobiledevice-macosx có thể giúp bạn có một số cách có

Trả lời

1

này sẽ là một chút khó khăn, bởi vì như tôi nghĩ rằng bạn đã phát hiện ra tên ứng dụng được tạo ngẫu nhiên trên mỗi lần cài đặt. Tôi không nghĩ rằng có một cách vượt qua điều đó, chắc chắn là tôi biết. Điều này giải thích các vấn đề bạn đang gặp phải khi mô phỏng một cài đặt mới (... tên thư mục ứng dụng thay đổi thành một băm mới ngẫu nhiên, và sau đó bạn bị kẹt).

Mặc dù sở thích của tôi là truy cập tệp cấu hình này theo cách khác (có lẽ qua mạng và có một số mã chỉ thực thi trên các bản dựng gỡ lỗi/kiểm tra), nếu bạn muốn thực hiện điều này thì tôi đề nghị thử một cái gì đó như viết một kịch bản mà khi bạn muốn mô phỏng một cài đặt mới chọn thư mục ứng dụng được sửa đổi gần đây nhất. Nhưng điều này là rất hacky.

Nếu bạn không thể chèn mã có điều kiện chỉ thực thi trên các bản dựng lỗi/thử nghiệm thì tôi nghĩ lược đồ đặt tên ứng dụng ngẫu nhiên mà iOS sử dụng ở cấp hệ thống tệp sẽ có vấn đề đối với bạn.

Cập nhật: Về iFuse và libimobiledevice - ngoài hộp, nó giới hạn bạn vào thư mục tài liệu. Điều này là do các tác giả của iFuse không cho phép người dùng nhập cảnh cấp độ lẫn lộn, và cũng bởi vì cấu trúc có một chút khác biệt tùy thuộc vào phiên bản iOS. Bạn có thể nhận xét các dòng trong nguồn iFuse - fuse_opt_add_arg(&args, "-osubdir=Documents"); - để truy cập vào thư mục thư viện thông qua kết nối. Bạn rõ ràng sẽ cần phải tự biên dịch lại iFuse nếu làm điều này.

+0

Tôi rất sẵn lòng làm tất cả những điều đó, nhưng tôi không có cách nào để thực hiện quyền truy cập dòng lệnh ngay từ đầu. Một khi tôi có mọi thứ khác là dễ dàng/SMOP. Tất cả các công cụ tôi có thể tìm thấy là GUI và không tự động hóa theo bất kỳ cách nào, đó là vấn đề. –

+0

Ah, xin lỗi về điều đó - đây là những gì bạn đang làm sau: http://www.libimobiledevice.org/ - nó hoạt động trên các thiết bị không bẻ khóa, mặc dù rõ ràng bạn chỉ có quyền truy cập vào thư mục ứng dụng. Nên được sử dụng tốt trên Linux, mặc dù tôi chỉ sử dụng nó trên OS X. – lxt

+0

Bạn có chắc chắn rằng libimobiledevice có thể truy cập vào các thư mục sandbox ứng dụng (Library, Caches etc) không? Tôi đã xem xét nó một lúc và không thể tìm thấy bất kỳ bằng chứng nào có thể. Nó chắc chắn có thể truy cập vào các thư mục khác (Chia sẻ tệp ứng dụng, v.v.) nhưng điều đó không hữu ích đối với tôi. Theo như tôi có thể nói họ sử dụng các giao thức khác nhau. –

0

Bạn có thể tận dụng MobileDevice Library

+0

Ocelot, bạn có thể vui lòng cho tôi biết cách chúng tôi có thể tận dụng điều này không? Tôi thích chuyển một số tệp Tài liệu (trên thiết bị) sang máy mac thông qua dòng lệnh – iamMobile

0

Tôi biết đây là một câu hỏi cũ và tôi nghi ngờ bất cứ ai đang tìm kiếm ở đây nữa, nhưng tôi nghĩ rằng tôi muốn đề cập rằng bạn có thể sử dụng 'brew cài đặt libimobiledevice' để biên dịch trên mac. Có rất nhiều phụ thuộc và Homebrew thực sự giúp làm cho nó một quá trình dễ dàng bằng cách cài đặt chúng cho bạn.

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