Ý nghĩa của SDK cơ sở, mục tiêu triển khai iOS, Target và Project trong xcode


161

Nói rằng tôi đặt SDK cơ bản thành 7, điều đó có nghĩa là gì? Điều đó có thể có nghĩa là ứng dụng sẽ chạy trên iOS 7. Nhưng đó là mục tiêu triển khai iOS dành cho.

Ngoài ra tại sao tôi chỉ định 3 giá trị đó trong cả dự án và mục tiêu. Nó không có ý nghĩa. Tại sao chỉ định điều tương tự hai lần?


Có một câu trả lời ngắn gọn cho câu hỏi này mới hơn: stackoverflow.com/a/41278576/498949
Chris Rae

Câu trả lời:


79

SDK cơ sở là những gì bạn xây dựng ứng dụng của mình (ví dụ: bao gồm các tệp và khung thư viện). Như bạn nói, nó không ảnh hưởng đến mục tiêu triển khai, ngoại trừ cơ sở đó sdk> = mục tiêu triển khai.

Bạn chỉ định cài đặt xây dựng theo 2 cấp vì mỗi dự án có thể có nhiều mục tiêu và bạn có thể không muốn có cùng cài đặt cho tất cả các mục tiêu. Cài đặt cấp dự án ghi đè cài đặt mặc định và cài đặt cấp mục tiêu ghi đè cài đặt cấp dự án.

Ví dụ: tôi có các dự án với cả hai mục tiêu OSX và iOS và một số là ARC và một số là MRR. Tôi phải có các dự án khác nhau cho từng dự án nếu tôi không thể chỉ định cài đặt bản dựng với mức độ chi tiết mà Xcode cho phép.


196

Trong TechTalk iOS 7 , phiên Kiến trúc ứng dụng hiện đại, Phần 2, họ giải thích điều này rõ ràng

nhập mô tả hình ảnh ở đây

Chào đọc ! Tôi sẵn sàng!

Vì vậy, một Ứng dụng hiện đại có thể sử dụng iOS 9 làm SDK mục tiêu và iOS 7 làm mục tiêu triển khai. Điều này có nghĩa là bạn có thể chạy trên iOS 7, iOS 8 và iOS 9 và bạn có sẵn cho bất kỳ cuộc gọi iOS 9 nào khi thực sự chạy trên iOS 9.

Bạn có thể đọc thêm trong SDK bài viết của tôi và Mục tiêu triển khai


20
Tài liệu tham khảo tốt .. và phần này được chôn vào khoảng 25:17 trong video 50 phút này.
Daniel

2
Đẹp! Nhưng điều gì xảy ra nếu bạn đặt Base SDK = 7.0 và bạn cố gắng cài đặt vào iOS 8.0? Chúng ta có phải tải xuống XCode cuối cùng để hỗ trợ SDK cơ sở mới nhất mọi lúc không?
GoRoS

1
@GoRoS ứng dụng của bạn sẽ không được hỗ trợ nếu sdk dựa trên <iOS 8 (người dùng không thể cài đặt từ cửa hàng ứng dụng). Vì UIKit / Foundation là thư viện động, Nếu bị buộc qua Xcode hoặc các thứ nhị phân có thể chỉ hoạt động nhưng ứng dụng có thể bị sập bất cứ lúc nào và thường không ổn định. SDK cơ sở luôn đi với phiên bản Xcode tương ứng. Tuy nhiên, SDK cơ sở cho Xcode là để giả lập, cái trên thiết bị có thể khác. Vì vậy, điều quan trọng là kiểm tra mọi thứ trên thiết bị thực trước khi bạn giao hàng. Đó là vấn đề với tất cả các thư viện động.
Kunal Balani

2
@chichilatte không, bạn không cần. Ứng dụng vẫn hỗ trợ iOS 12, iOS 13, ... nhưng nó sẽ không có bất kỳ tính năng mới nào của iOS 12, iOS 13 .... Để sử dụng tính năng mới của iOS 12, bạn cần phải biên dịch với SDK iOS 12 và sử dụng API từ iOS 12.
onmyway133

2
Cảm ơn, điều đó có ý nghĩa. Tôi nghĩ nhận xét của @ Kunal-Balani ở trên là sai.
chichilatte

67

SDK cơ sở là SDK bạn liên kết với. Mục tiêu triển khai là phiên bản iOS yêu cầu tối thiểu mà ứng dụng của bạn cần chạy. Bạn có thể xây dựng một ứng dụng với SDK 7 chạy trong iOS 6. Nhưng sau đó, bạn phải cẩn thận không sử dụng bất kỳ chức năng hoặc phương pháp nào không có trên iOS 6. Nếu bạn làm vậy, ứng dụng của bạn sẽ bị sập trên iOS 6 ngay khi chức năng này được sử dụng.

Xem tài liệu về apple để biết thêm chi tiết: https://developer.apple.com/l Library / content / documentation / DeveloperTools / Conceptionual / cross_development /Configuring / configuring.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.