2013-03-15 35 views
14

Khi chúng tôi triển khai phiên bản mới của ứng dụng iOS vào App Store thông qua XCode, một tệp lưu trữ được tạo.Tôi có thể chạy lưu trữ ứng dụng cũ trong Trình mô phỏng không?

Có cách nào để lấy một kho lưu trữ cũ và chạy nó trong trình mô phỏng không? Tôi muốn làm điều đó để có thể dễ dàng kiểm tra tính tương thích ngược của mã phía máy chủ với tất cả các phiên bản trước của ứng dụng (hoặc ít nhất hai phiên bản chủ yếu được sử dụng tại thời điểm đó).

Tôi biết rằng tôi có thể cam kết vào một kho lưu trữ GIT và kéo một phiên bản cụ thể, nhưng điều đó có hai vấn đề: a. nó phức tạp hơn việc chạy một kho lưu trữ, b. nó dễ bị lỗi và ngừng phát triển phiên bản mới trên máy, và c. có thể có một số sai lệch liên quan đến các thay đổi của trình biên dịch hoặc bất kỳ thay đổi XCode nào khác giữa việc hiển thị phiên bản khó biên dịch.

Tôi không thể tìm thấy bất kỳ trợ giúp nào về điều đó trên StackOverflow, cũng như không có bất kỳ dấu hiệu nào của khả năng này trong kho lưu trữ trong XCode. Tôi có nên gửi yêu cầu tính năng @ Apple không?

+0

Không chắc chắn 100% bạn có thể làm điều đó vào trình mô phỏng, nhưng tại sao bạn không thử nghiệm những lưu trữ đó một cách đơn giản vào thiết bị của mình. –

+0

@MrBonjour: Vì tệp nhị phân đã lưu trữ được tạo bằng chứng chỉ phân phối sẽ không chạy trên thiết bị? – zoul

+0

@MrBonjour Điều đó sẽ hoạt động tốt, cách thực hiện điều này? – Resh32

Trả lời

9

Không, bạn không thể tạo lưu trữ được tạo cho App Store và chạy tệp đó trong trình mô phỏng - ngay cả khi bạn có thể giải quyết vấn đề ký, v.v., kho lưu trữ được tạo cho App Store chứa mã được biên dịch cho ARM bộ vi xử lý, mà các thiết bị i có. Mã được xây dựng cho trình mô phỏng được biên dịch cho bộ xử lý x86, để nó có thể chạy trên máy Mac.

+1

+1. Nói một cách hoàn toàn về mặt kỹ thuật, bạn có thể xây dựng một gói chứa cả mã x86 và ARM, nhưng App Store sẽ không thích nó và vẫn còn ký. – zoul

+0

+1 Liệu nó có hoạt động nếu tôi thực hiện hai lưu trữ khi phát hành cho Apple? Kho lưu trữ thứ hai sẽ phù hợp với lược đồ khác, nhưng chỉ ký sẽ khác nhau - sau đó tôi vẫn có thể chạy trên một chiếc iPod touch (OK tôi có thể quên bộ mô phỏng) bằng cách sử dụng giải pháp được đề xuất @Lefteris. – Resh32

5

Một cách dễ dàng hợp lý để thực hiện việc này là thông qua Test Flight. Chúng tôi thường xuyên kiểm tra các phiên bản mới thông qua Chuyến bay thử nghiệm, các phiên bản cũ vẫn tồn tại ở đó và có thể quay lại bất kỳ lúc nào. Đó là một bản dựng khác với bản dựng cuối cùng bạn gửi đến App Store, nhưng đó là thứ sẽ luôn đúng, khi bản dựng Cửa hàng ứng dụng được ký bằng chứng chỉ phân phối và AFAIK sẽ không chạy ở bất kỳ đâu trừ khi được cài đặt qua cửa hàng.

+0

+1 Chúng tôi đã sử dụng testflight theo cách đó, nhưng vẫn có sự khác biệt giữa các ứng dụng thử nghiệm và sản xuất (và ví dụ testflight bị vô hiệu hóa để xây dựng sản xuất) - nhưng tôi nghĩ rằng đó vẫn là cách tiếp cận tốt nhất. – Resh32

2

Bạn có thể tạo phiên bản OTA (qua không khí) của ứng dụng (sau đó bạn có thể tải xuống nhị phân từ máy chủ) hoặc chỉ cần tạo tệp ipa và cài đặt nó từ iTunes.

Để thực hiện việc này, bạn phải tạo profil cấp phép adhoc. Kiểm tra tài liệu Apple, vì có một chút phức tạp để giải thích

1

Nếu lưu trữ của bạn được tạo cho thiết bị (AdHoc hoặc Release), bạn có thể tạo tệp ipa và cài đặt nó trên thiết bị (giải thích bên dưới về cách thực hiện). Nếu nó được xây dựng cho trình mô phỏng (có nghĩa là kiến ​​trúc CPU i386) thì bạn không thể tạo ipa cho thiết bị.

Theo như tôi biết, bạn có thể thực hiện một ipa ra khỏi một Xcode 4 lưu trữ sử dụng dòng lệnh:

/usr/bin/xcrun -sdk iphoneos PackageApplication 
    "/absolute/path/to/MyApp.xcarchive/Products/Applications/MyApp.app" 
    -o "/absolute/path/to/MyApp.ipa" 

Sau khi bạn nhận được ipa, bạn có thể cài đặt nó trên các thiết bị vật lý, nếu nó đã được được tạo với chữ ký chính xác, khác you can re-sign it

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