2009-12-17 33 views
10

Tôi hơi bối rối về việc tạo ứng dụng cho cửa hàng ứng dụng và phiên bản hệ điều hành SDK & chính xác. Tôi đã gửi ứng dụng của tôi đến cửa hàng ứng dụng và trong màn hình chi tiết ứng dụng kết nối iTunes nó nói:iPhone: Hệ điều hành tối thiểu, mục tiêu triển khai & cơ sở/SDK hoạt động

"Yêu cầu hệ điều hành tối thiểu: 3.1.2"

Tôi chưa thấy bất kỳ ứng dụng trên cửa hàng ứng dụng có 3.1.2 là hệ điều hành tối thiểu, tất cả đều nói 3.0. Tôi đã đọc vài thứ ở đây trước khi tôi xây dựng nó và tôi nghĩ rằng tôi đã hiểu mọi thứ!

Về cơ bản, ứng dụng của tôi không sử dụng bất kỳ mã nào chỉ tồn tại trong> 3.0 vì vậy tôi muốn hệ điều hành tối thiểu là 3.0. thiết lập xây dựng của tôi là:

Target Thông tin

  • cơ sở SDK: iPhone Device 3.0
  • iPhone OS Triển khai mục tiêu: hệ điều hành iPhone 3,0

Xcode Main Window

  • A ctive SDK: Thiết bị iPhone 3.1.2

Tôi đã nghe nói về một phiên bản hệ điều hành tối thiểu được đưa vào Info.plist nhưng tôi chưa có bất cứ điều gì giống như vậy trong tôi.

Tôi tạo ứng dụng chính xác như vậy và gửi nó. Cài đặt ứng dụng của tôi có chính xác không? Ứng dụng của tôi có hiển thị 3,0 trong cửa hàng ứng dụng hay không 3.1.2? Tôi là một chút không chắc chắn là tại sao bạn thiết lập các hoạt động SDK mới nhất (3.1.2) khi bạn muốn nhắm mục tiêu 3.0, 3.1 & 3.12 thiết bị, nhưng đó là những gì tôi đọc!

Bất kỳ lời khuyên trợ giúp nào được đánh giá cao!

+0

Kiểm tra câu trả lời này cho một câu hỏi tương tự: http://stackoverflow.com/questions/380138/which-iphone-active-sdk-version-should-i -use/385125 # 385125 –

Trả lời

25

Được rồi tôi đã quản lý để hình dung ra sau nhiều lần đọc!

Về cơ bản, SDK hoạt động chỉ là ghi đè thời gian xây dựng của SDK cơ sở. Theo mặc định, khi SDK cơ sở thay đổi nó sẽ tự động thay đổi mục tiêu triển khai cho cùng một hệ điều hành như SDK. Vì vậy, khi tôi muốn xây dựng ứng dụng theo SDK 3.1.2 nhưng nó chạy trên hệ điều hành 3.0, tôi đã thay đổi SDK hoạt động thành 3.1.2, nhưng điều đó đã tự động thay đổi hệ điều hành tối thiểu (mục tiêu triển khai). Tôi thấy điều này bằng cách nhìn vào tệp Info.plist trong nội dung gói trong tệp .app của tôi.

Vì vậy, điều tốt nhất cần làm là đặt SDK cơ sở thành SDK mới nhất (hiện tại là 3.1.2) và sau đó đặt thủ công mục tiêu triển khai thành 3.0 OS. Khi 2 khác nhau thì nó sẽ không còn tự động thay đổi nữa.

Tuy nhiên, điều này có nghĩa là ứng dụng của bạn có thể cài đặt trên thiết bị 3.0 có thể có 3.0, 3.1 hoặc 3.1.2 SDK. Do đó, bất kỳ khung công tác, phương pháp hoặc thuộc tính nào bạn sử dụng chỉ có sẵn trong SDK lớn hơn 3.0, bạn sẽ phải sử dụng conditionally.

Khi bạn bắt đầu xây dựng ứng dụng, hãy đảm bảo rằng Mục tiêu hoạt động được đặt giống với SDK cơ sở của bạn, ví dụ: Thiết bị 3.1.2. Nhưng hãy nhớ biên dịch ứng dụng của bạn trong Device 3.0, Device 3.1 và Device 3.1.2 chỉ để kiểm tra cảnh báo trình biên dịch. Điều này sẽ đảm bảo rằng bạn không có bất kỳ phương thức/khung truy cập mã nào không tồn tại trong bất kỳ SDK nào đến Mục tiêu triển khai của bạn.

Tôi hy vọng điều này sẽ giúp bất kỳ ai ở vị trí của tôi và không thể tìm thấy giải thích đơn giản về cách hoạt động của tất cả.

SDK Compatibility Guide rất hữu ích và có nhiều thông tin. Tuy nhiên, nó chỉ là một chút phụ tìm ra cho tôi để được thoải mái với khái niệm và làm thế nào tất cả mọi thứ hoạt động. Hình ảnh này từ hướng dẫn rất hữu ích:

alt text http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/cross_development/art/using_sdks.jpg

0

Chuyển đến Info- Project> Build và nhìn vào tài sản IPHONEOS_DEPLOYMENT_TARGET Trên thực tế tôi sử dụng 3.1.2 SDK và xây dựng một ứng dụng mà làm việc tốt đẹp trên tất cả các hệ điều hành cao hơn 2.2.1

+0

Cách thức hoạt động? Nếu bạn thiết lập Active/Base SDK thành 3.1.2 thì Target Deployment của bạn sẽ thay đổi thành 3.1.2, có hiệu quả không cho phép nó được cài đặt trên bất cứ thứ gì thấp hơn 3.1.2? –

+0

Nó là một loại ma thuật, hoặc thời gian chạy động obj-c. Có thể xây dựng ứng dụng sử dụng các tính năng độc quyền của OS 3.1, nhưng vẫn tương thích với OS 2.0. Bạn chỉ cần tránh các cuộc gọi được gắn nhãn "Có sẵn trong iPhone OS 3.0 trở lên" hoặc sử dụng -respondsToSelector trước cuộc gọi phương thức. – vaddieg

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