2011-01-27 16 views
6

Tôi đang biên soạn một dự án đang sử dụng một chức năng chỉ được xác định trong iOS SDK 4.1. Tuy nhiên, tôi có thể đặt mục tiêu triển khai ios thành 3.2 và biên dịch nó mà không có bất kỳ cảnh báo nào.Cách nhắm mục tiêu phiên bản iPhone cũ nhất có thể với SDK iOS mới nhất và phát hiện các biểu tượng bị thiếu từ các API mới hơn?

IPHONEOS_DEPLOYMENT_TARGET = 3.2

Xcode không cảnh báo tôi như thế nào. Tui bỏ lỡ điều gì vậy. Tôi có một dự án lớn hơn và tôi phải xác định những gì có thể là mục tiêu tối thiểu của tôi, tôi nên tiến hành như thế nào?

Tuy nhiên, tài liệu nêu rõ:

"Lưu ý: Nếu SDK bạn đang sử dụng để xây dựng các ứng dụng mới hơn mục tiêu iOS phiên bản của ứng dụng (ví dụ, SDK hoạt động là iOS 4.2 và iOS Deployment Mục tiêu là iPhone OS 4.0), Xcode hiển thị các cảnh báo khi phát hiện ứng dụng của bạn đang sử dụng một tính năng không có trong bản phát hành OS đích. "

http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iphone_development/120-Building_and_Running_Applications/building_and_running_applications.html%23//apple_ref/doc/uid/TP40007959-CH6

+1

Trừ khi tôi hiểu nhầm điều gì đó, tài liệu đó sai. Tôi chưa bao giờ có thể thấy cảnh báo khi tôi đã sử dụng các tính năng quá mới. – kubi

+0

Không bao giờ nhìn thấy cảnh báo, hiện một param là cần thiết cho trình biên dịch? –

+0

Điều này thật khủng khiếp! Không ai tìm ra giải pháp cho việc này sao !? Bây giờ, chúng ta cần phải kiểm tra tất cả các ứng dụng để có được lỗi thời gian chạy cho tất cả mọi thứ thay vì lỗi biên dịch/cảnh báo ... hm ... –

Trả lời

0

Trong trường hợp của chúng tôi, chúng tôi giữ Xcode cũ cài đặt và dòng lệnh chạy máng:

/Developer3.2.6/usr/bin/xcodebuild -project project.xcodeproj -target unittests -sdk iphonesimlator4. 3

Nếu quá trình biên dịch thất bại, nhật ký rõ ràng về việc sử dụng mã không khai báo (ví dụ iOS 5). Tất nhiên, hội nhập liên tục Jenkins là bạn của chúng tôi để làm điều đó.

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