2012-10-03 34 views
31

Chúng tôi cần thử nghiệm ứng dụng của chúng tôi trong bối cảnh nâng cấp iOS (ví dụ: 5.1 -> 6.0). Thật không may, Apple không cho phép hạ cấp thiết bị. Chúng tôi đã nghĩ đến việc thực hiện nó trong trình mô phỏng, nhưng các phiên bản khác nhau của trình mô phỏng là các môi trường khác nhau. Tôi nghĩ rằng chúng tôi có thể sao chép các gói từ một giả lập khác, nhưng điều đó sẽ không di chuyển keychain (nó sẽ?).Làm thế nào để mô phỏng nâng cấp phiên bản iOS?

Cảm ơn!

+1

Bạn muốn kiểm tra điều gì bằng cách này? Thử nghiệm ứng dụng riêng biệt trên 5.1 và trên 6.0 là đủ. Ứng dụng không thể chạy khi hệ thống đang nâng cấp. – Sulthan

+3

Có nhiều cách để hạ cấp hệ điều hành của bạn - hãy tìm chiếc ô nhỏ xíu - ví dụ: http://www.idownloadblog.com/2012/05/25/save-your-shsh-blobs-5-1-1/ – Till

+1

Sulthan, ah, sự khác biệt giữa lý thuyết và thực hành ... chúng tôi nghĩ rằng có một số logic trong ứng dụng của chúng tôi phá vỡ trong quá trình chuyển đổi và để lại một số dữ liệu ứng dụng ở trạng thái không nhất quán. Đến nay, cảm ơn, chúng tôi sẽ thử điều đó, nếu chúng tôi tìm thấy bất kỳ thiết bị nào mà chúng tôi chưa nâng cấp lên iOS 6.0. Tuy nhiên, nó sẽ dễ dàng nhất thông qua trình mô phỏng. –

Trả lời

5

Hiện tại, bạn vẫn có thể cài đặt iOS 8.2. Khi một phiên bản mới được phát hành, Apple để lại cả hai phiên bản mở để cài đặt trong một thời gian ngắn. Trong khi "cửa sổ ký" mở, bạn có thể nâng cấp thiết bị, kiểm tra và sau đó khôi phục thiết bị từ hình ảnh của phiên bản cũ hơn. Vì vậy, bạn có thể làm một số thử nghiệm chuyên sâu trong khi cửa sổ mở, nhưng rõ ràng đó không phải là một giải pháp lâu dài (nó thường chỉ kéo dài vài ngày).

Nếu bạn có ngân sách cho nó, bạn có thể cài đặt 8,2 trên thiết bị, đặt một hình dán lớn trên đó nói "không nâng cấp" và giữ nó trên 8.2 miễn là có liên quan. Cài đặt ứng dụng của bạn trên thiết bị đó và thực hiện sao lưu (với mã hóa sao lưu được bật để các mục nhập keychain), sau đó khôi phục bản sao lưu đó sang thiết bị khác có trên 8.3 - về cơ bản, bạn sẽ thực hiện thủ tục tương tự khi thực hiện nâng cấp/khôi phục lại thông qua iTunes vì ​​vậy nó phải được khá gần. Nó sẽ không được chính xác giống như một bản cập nhật OTA trên thiết bị của khóa học, nhưng đối với điều đó, xem tùy chọn 1 ở trên (và nhìn thấy nó sớm).

11

Để kiểm tra chuyển đổi từ một trạng thái (trước) sang trạng thái khác (sau), bạn cần có cách để đặt ứng dụng ở trạng thái trước đó.

Ứng dụng của bạn chắc chắn sẽ không chạy trong khi hệ điều hành đang được cập nhật, vì vậy bạn thực sự chỉ cần lo lắng về ứng dụng khởi động và phát hiện ra rằng hệ điều hành đã được cập nhật. Có một vài lựa chọn:

  • Sao chép tất cả ứng dụng của bạn tập tin dữ liệu từ một thiết bị chạy "cũ" iOS phiên bản (5.1 theo câu hỏi của bạn) với một thiết bị chạy (6.0) phiên bản mới. Trình tổ chức trong Xcode sẽ cho phép bạn dễ dàng sao chép "vùng chứa" của ứng dụng từ thiết bị sang máy Mac hoặc ngược lại.

  • Làm cho ứng dụng của bạn ghi dữ liệu ở định dạng "cũ". Không có gì lạ khi ứng dụng có phương pháp đọc và ghi dữ liệu ở các định dạng khác nhau tùy thuộc vào môi trường, vì vậy thường dễ dàng hơn để ứng dụng ghi dữ liệu ở định dạng cũ hơn là thực sự sao chép từ thiết bị cũ.

Cho dù con đường bạn chọn, suy nghĩ về bất kỳ nơi khác (như giá trị mặc định người dùng) mà bạn có thể thực hiện thay đổi phiên bản phụ thuộc vào hệ điều hành và thiết lập những trở về giá trị tương ứng với các hệ điều hành trước đó. Điều này đặc biệt áp dụng cho các mục keychain không được lưu trữ trong hộp cát của ứng dụng của bạn.

khuôn khổ Đơn vị kiểm tra (như khuôn khổ XCTest của Apple) thường có một cơ chế thiết lập mà bạn có thể sử dụng để thiết lập lại ứng dụng của mình vào trước nhà nước, bao gồm sao chép file, thêm và loại bỏ mặt hàng keychain, thiết lập giá trị mặc định mặt hàng, vv Bạn sau đó có thể thêm các bài kiểm tra đơn vị chạy bất kỳ mã nào có thể tham gia vào bản cập nhật và kiểm tra kết quả. Với một tập hợp các bài kiểm tra dễ dàng lặp lại, bạn sẽ có thể gỡ lỗi mọi vấn đề dễ dàng hơn.

Tuy nhiên bạn tiếp cận nó, mục tiêu là đặt ứng dụng ở trạng thái giống như khi nó chạy lần đầu tiên sau khi cập nhật hệ điều hành xảy ra.Bạn không cần phải lo lắng về việc mô phỏng cập nhật hệ điều hành thực tế, bạn chỉ cần lừa ứng dụng nghĩ rằng bản cập nhật vừa mới xảy ra.

+1

Điều này có bao gồm các mục nhập khóa (điểm chính của câu hỏi tôi nghĩ) không? – CupawnTae

+0

@CupawnTae The * đặt ứng dụng trong ý tưởng trước đây * chắc chắn áp dụng cho các mục keychain, nhưng vì keychain là (một) mà vẫn tồn tại bên ngoài sandbox của ứng dụng, bạn cần viết mã để làm điều đó. Cảm ơn bạn đã chỉ ra - Tôi sẽ chỉnh sửa địa chỉ keychain cụ thể. – Caleb

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