2014-09-02 29 views
9

Sự khác biệt giữa "min sdk, sdk mục tiêu và biên dịch với" trong android là gì?sự khác biệt giữa "min sdk, sdk mục tiêu và biên dịch với" là gì? trong android

Sự khác biệt giữa "sdk tối thiểu, mục tiêu sdk và biên dịch với", xuất hiện khi tôi cố gắng tạo một dự án ứng dụng Android mới !! như thế này ..

Minimun SDK: API 14 Target SDK: API 17 Compile Với: API 14

Và là sự lựa chọn của tôi tốt ?? hoặc Tôi nên chọn cái nào? Rất tiếc, tôi đã cố gắng đặt ảnh nhưng tôi không thể ..

"Đang chờ câu trả lời" plzzz = D!

+2

tôi thực sự đọc nhưng tôi không hiểu rõ: ((!! –

Trả lời

12

đơn giản,

Minimun SDK: API 14

đề cập rằng ứng dụng của bạn sẽ chỉ chạy trên điện thoại di động với mức api 14 tức là (ICS 4.0) hoặc cao hơn. Ứng dụng của bạn sẽ không chạy trên các phiên bản Android cũ như bánh gừng & froyo.

Target SDK: API 17

đề cập đến phiên bản của Android mà bạn muốn xây dựng cho, đó là Jellybean trên trường hợp của bạn. Bạn nên giữ mới nhất càng xa càng tốt (api 20 Kitkat ở ngữ cảnh hiện tại).

Compile Với: API 14

đề cập đến phiên bản của Andriod bạn đang thử nghiệm trên. Việc tuân thủ api 14 có nghĩa là bạn sẽ thử nghiệm ứng dụng của mình trên ICS.

bạn cũng có thể xem video này:

https://www.youtube.com/watch?v=Sxo5zMcOCXM>

+0

thaaaaaanks .. đây là những gì tôi muốn :))! –

7

android: minSdkVersion

Một số nguyên chỉ định Cấp API tối thiểu cần thiết cho các ứng dụng để chạy. Hệ thống Android sẽ ngăn người dùng cài đặt ứng dụng nếu mức API của hệ thống thấp hơn giá trị được chỉ định trong thuộc tính này. Bạn phải luôn khai báo thuộc tính này.

android: targetSdkVersion

Một số nguyên chỉ định API Cấp rằng các mục tiêu ứng dụng. Nếu không được đặt, giá trị mặc định bằng với giá trị được đặt cho minSdkVersion. Thuộc tính này thông báo cho hệ thống mà bạn đã thử nghiệm đối với phiên bản đích và hệ thống không nên bật bất kỳ hành vi tương thích nào để duy trì tính tương thích về phía trước của ứng dụng với phiên bản đích. Ứng dụng vẫn có thể chạy trên các phiên bản cũ hơn (xuống đến minSdkVersion).

Khi Android phát triển với mỗi phiên bản mới, một số hành vi và thậm chí cả các lần xuất hiện có thể thay đổi. Tuy nhiên, nếu cấp API của nền tảng cao hơn phiên bản được khai báo bởi targetSdkVersion của ứng dụng, hệ thống có thể bật hành vi tương thích để đảm bảo rằng ứng dụng của bạn tiếp tục hoạt động theo cách bạn mong đợi. Bạn có thể tắt các hành vi tương thích như vậy bằng cách chỉ định targetSdkVersion để khớp với cấp API của nền tảng mà nó đang chạy. Ví dụ: đặt giá trị này thành "11" hoặc cao hơn cho phép hệ thống áp dụng chủ đề mặc định mới (Holo) cho ứng dụng của bạn khi chạy trên Android 3.0 trở lên và cũng tắt chế độ tương thích màn hình khi chạy trên màn hình lớn hơn (vì hỗ trợ cho API cấp 11 hoàn toàn hỗ trợ màn hình lớn hơn).

Có nhiều hành vi tương thích mà hệ thống có thể bật dựa trên giá trị bạn đặt cho thuộc tính này. Một số hành vi này được mô tả bằng các phiên bản nền tảng tương ứng trong tham chiếu Build.VERSION_CODES.

Để duy trì ứng dụng của bạn cùng với mỗi bản phát hành Android, bạn nên tăng giá trị của thuộc tính này để phù hợp với cấp API mới nhất, sau đó kiểm tra kỹ ứng dụng của bạn trên phiên bản nền tảng tương ứng. Được giới thiệu vào: API Level 4

android: maxSdkVersion

Một số nguyên chỉ định Cấp API tối đa mà trên đó các ứng dụng được thiết kế để chạy. Trong Android 1.5, 1.6, 2.0 và 2.0.1, hệ thống sẽ kiểm tra giá trị của thuộc tính này khi cài đặt ứng dụng và khi xác thực lại ứng dụng sau khi cập nhật hệ thống.Trong cả hai trường hợp, nếu thuộc tính maxSdkVersion của ứng dụng thấp hơn mức API được sử dụng bởi chính hệ thống, thì hệ thống sẽ không cho phép ứng dụng được cài đặt. Trong trường hợp xác nhận lại sau khi cập nhật hệ thống, điều này sẽ xóa ứng dụng của bạn khỏi thiết bị một cách hiệu quả.

hãy truy cập thông qua liên kết này để biết thêm chi tiết

http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

+0

Bạn không trả lời về "biên dịch với". – Kidburla

1

Nói tóm lại, đây là mục đích để tuyên bố một targetSDK khác với minSDK: Nó có nghĩa là bạn đang sử dụng tính năng từ một SDK mức cao hơn của bạn tối thiểu, nhưng bạn có đảm bảo khả năng tương thích ngược. Nói cách khác, hãy tưởng tượng rằng bạn muốn sử dụng một tính năng mới được giới thiệu gần đây, nhưng điều đó không quan trọng đối với ứng dụng của bạn. Sau đó, bạn sẽ đặt targetSDK thành phiên bản nơi tính năng mới này được giới thiệu và mức tối thiểu cho một cái gì đó thấp hơn để mọi người vẫn có thể sử dụng ứng dụng của bạn.

Để đưa ra ví dụ, giả sử bạn đang viết một ứng dụng sử dụng rộng rãi tính năng phát hiện cử chỉ. Tuy nhiên, mọi lệnh có thể được nhận biết bằng cử chỉ cũng có thể được thực hiện bằng một nút hoặc từ menu. Trong trường hợp này, cử chỉ là một 'phụ thú vị' nhưng không bắt buộc. Do đó bạn sẽ đặt sdk mục tiêu thành 7 ("Eclair" khi thư viện GestureDetection được giới thiệu) và tối thiểuSDK thành cấp 3 ("Cupcake") để ngay cả những người có điện thoại thực sự cũ có thể sử dụng ứng dụng của bạn. Tất cả những gì bạn phải làm là đảm bảo rằng ứng dụng của bạn đã kiểm tra phiên bản Android mà nó đang chạy trước khi thử sử dụng thư viện cử chỉ, để tránh sử dụng nó nếu nó không tồn tại. (Phải thừa nhận rằng đây là một ví dụ ngày kể từ khi hầu như không ai vẫn có một điện thoại v1.5, nhưng có một thời gian khi duy trì khả năng tương thích với v1.5 là thực sự quan trọng.)

Để đưa ra một ví dụ khác, bạn có thể sử dụng nếu bạn muốn sử dụng một tính năng từ Gingerbread hoặc Honeycomb. Một số người sẽ sớm nhận được bản cập nhật, nhưng nhiều người khác, đặc biệt là với phần cứng cũ hơn, có thể gặp khó khăn với Eclair cho đến khi họ mua một thiết bị mới. Điều này sẽ cho phép bạn sử dụng một số tính năng mới thú vị, nhưng không loại trừ một phần thị trường có thể có của bạn.

Có một bài viết thực sự tốt từ Android developer's blog về cách sử dụng tính năng này và đặc biệt, cách thiết kế "kiểm tra tính năng tồn tại trước khi sử dụng" mã tôi đã đề cập ở trên.

Đối với OP: Tôi đã viết chủ yếu vì lợi ích của bất kỳ ai tình cờ gặp phải câu hỏi này trong tương lai, khi tôi nhận ra câu hỏi của bạn đã được hỏi từ lâu. here is the Post

0

android: minSdkVersion Một số nguyên chỉ định Cấp API tối thiểu cần thiết cho các ứng dụng để chạy. Hệ thống Android sẽ ngăn người dùng cài đặt ứng dụng nếu mức API của hệ thống thấp hơn giá trị được chỉ định trong thuộc tính này. Bạn phải luôn khai báo thuộc tính này. Thận trọng: Nếu bạn không khai báo thuộc tính này, hệ thống sẽ giả định giá trị mặc định là "1", cho biết ứng dụng của bạn tương thích với tất cả các phiên bản Android. Nếu ứng dụng của bạn không tương thích với tất cả các phiên bản (ví dụ, nó sử dụng API được giới thiệu trong API Level 3) và bạn chưa khai báo minSdkVersion thích hợp, khi được cài đặt trên hệ thống có Cấp API nhỏ hơn 3, ứng dụng sẽ gặp sự cố trong thời gian chạy khi cố gắng truy cập các API không khả dụng. Vì lý do này, hãy chắc chắn khai báo Mức API thích hợp trong thuộc tính minSdkVersion.

android: targetSdkVersion Một số nguyên chỉ định cấp API mà ứng dụng nhắm mục tiêu.Nếu không được đặt, giá trị mặc định bằng với giá trị được đặt cho minSdkVersion. Thuộc tính này thông báo cho hệ thống mà bạn đã thử nghiệm đối với phiên bản đích và hệ thống không nên bật bất kỳ hành vi tương thích nào để duy trì tính tương thích về phía trước của ứng dụng với phiên bản đích. Ứng dụng vẫn có thể chạy trên các phiên bản cũ hơn (xuống đến minSdkVersion).

Khi Android phát triển với mỗi phiên bản mới, một số hành vi và thậm chí cả các lần xuất hiện có thể thay đổi. Tuy nhiên, nếu cấp API của nền tảng cao hơn phiên bản được khai báo bởi targetSdkVersion của ứng dụng, hệ thống có thể bật hành vi tương thích để đảm bảo rằng ứng dụng của bạn tiếp tục hoạt động theo cách bạn mong đợi. Bạn có thể tắt các hành vi tương thích như vậy bằng cách chỉ định targetSdkVersion để khớp với cấp API của nền tảng mà nó đang chạy. Ví dụ: đặt giá trị này thành "11" hoặc cao hơn cho phép hệ thống áp dụng chủ đề mặc định mới (Holo) cho ứng dụng của bạn khi chạy trên Android 3.0 trở lên và cũng tắt chế độ tương thích màn hình khi chạy trên màn hình lớn hơn (vì hỗ trợ cho API cấp 11 hoàn toàn hỗ trợ màn hình lớn hơn).

Có nhiều hành vi tương thích mà hệ thống có thể bật dựa trên giá trị bạn đặt cho thuộc tính này. Một số hành vi này được mô tả bằng các phiên bản nền tảng tương ứng trong tham chiếu Build.VERSION_CODES.

Để duy trì ứng dụng của bạn cùng với mỗi bản phát hành Android, bạn nên tăng giá trị của thuộc tính này để phù hợp với cấp API mới nhất, sau đó kiểm tra kỹ ứng dụng của bạn trên phiên bản nền tảng tương ứng.

Được giới thiệu vào: API Level 4

android: maxSdkVersion Một số nguyên chỉ định Cấp API tối đa mà trên đó các ứng dụng được thiết kế để chạy. Trong Android 1.5, 1.6, 2.0 và 2.0.1, hệ thống sẽ kiểm tra giá trị của thuộc tính này khi cài đặt ứng dụng và khi xác thực lại ứng dụng sau khi cập nhật hệ thống. Trong cả hai trường hợp, nếu thuộc tính maxSdkVersion của ứng dụng thấp hơn mức API được sử dụng bởi chính hệ thống, thì hệ thống sẽ không cho phép ứng dụng được cài đặt. Trong trường hợp xác nhận lại sau khi cập nhật hệ thống, điều này sẽ xóa ứng dụng của bạn khỏi thiết bị một cách hiệu quả.

Để minh họa cách thuộc tính này có thể ảnh hưởng đến ứng dụng của bạn sau khi cập nhật hệ thống, hãy xem xét ví dụ sau:

Đơn tuyên bố maxSdkVersion = "5" trong manifest của nó được xuất bản trên Google Play. Người dùng có thiết bị đang chạy bản tải xuống Android 1.6 (API cấp 4) và cài đặt ứng dụng. Sau một vài tuần, người dùng nhận được bản cập nhật hệ thống qua mạng không dây cho Android 2.0 (API cấp 5). Sau khi bản cập nhật được cài đặt, hệ thống kiểm tra maxSdkVersion của ứng dụng và xác thực lại thành công nó. Ứng dụng hoạt động như bình thường. Tuy nhiên, một thời gian sau đó, thiết bị nhận được bản cập nhật hệ thống khác, lần này là Android 2.0.1 (API Cấp 6). Sau khi cập nhật, hệ thống không còn có thể xác thực lại ứng dụng vì mức API của chính hệ thống (6) hiện cao hơn mức tối đa được hỗ trợ bởi ứng dụng (5). Hệ thống ngăn ứng dụng hiển thị với người dùng, có hiệu lực xóa ứng dụng khỏi thiết bị.

Cảnh báo: Tuyên bố thuộc tính này không được khuyến nghị. Đầu tiên, không cần thiết lập thuộc tính làm phương tiện chặn việc triển khai ứng dụng của bạn lên các phiên bản mới của nền tảng Android khi chúng được phát hành. Theo thiết kế, các phiên bản mới của nền tảng này hoàn toàn tương thích ngược. Ứng dụng của bạn sẽ hoạt động bình thường trên các phiên bản mới, miễn là nó chỉ sử dụng các API tiêu chuẩn và tuân theo các phương pháp hay nhất về phát triển. Thứ hai, lưu ý rằng trong một số trường hợp, việc khai báo thuộc tính có thể khiến ứng dụng của bạn bị xóa khỏi thiết bị của người dùng sau khi cập nhật hệ thống lên cấp API cao hơn.Hầu hết các thiết bị mà ứng dụng của bạn có khả năng được cài đặt sẽ nhận được các bản cập nhật hệ thống định kỳ trong không khí, vì vậy bạn nên xem xét hiệu ứng của chúng trên ứng dụng của bạn trước khi thiết lập thuộc tính này.

Được giới thiệu vào: API Level 4

phiên bản tương lai của Android (ngoài Android 2.0.1) sẽ không còn kiểm tra hoặc thi hành các thuộc tính maxSdkVersion trong khi cài đặt hoặc tái xác nhận. Tuy nhiên, Google Play sẽ tiếp tục sử dụng thuộc tính làm bộ lọc khi trình bày cho người dùng các ứng dụng có sẵn để tải xuống.

Xem thêm về điều này, bấm vào đây: use sdk

3

Đang cố gắng để giữ cho nó đơn giản càng tốt Tôi có thể giải thích ba thuật ngữ theo cách sau:

Min Required SDK: show thiết bị có phiên bản Android tối thiểu bạn muốn ứng dụng của mình hỗ trợ. Ví dụ, nếu bạn chọn API 11: Honey Comb trong danh sách thả xuống. Điều này sẽ cho thấy rằng ứng dụng của bạn sẽ không hỗ trợ/sẽ không chạy trên bất kỳ thiết bị Android nào có phiên bản Android thấp hơn Honey Comb.

Target SDK: Điều này sẽ luôn được giữ càng cao càng tốt vì nó cho biết phiên bản Android tối đa bạn đang nhắm mục tiêu hoặc thử nghiệm ứng dụng của mình. Vì vậy, nếu bạn giữ minReqSDK >> 11 (mật ong lược) và targetSDK >> 21 (Lollipop), điều này cho thấy ứng dụng của bạn sẽ chạy trên tất cả các phiên bản Android từ tổ ong đến Lollipop không có vấn đề tương thích như bạn đã đặt SDK mục tiêu của mình> > 21 phiên bản Lollipop.

biên dịch với: Điều này không liên quan gì đến việc hỗ trợ Android cho bất kỳ thiết bị nào. Bạn có thể chọn bất kỳ phiên bản Android nào mà bạn đã cài đặt bằng cách sử dụng trình quản lý SDK của bạn để biên dịch và chạy ứng dụng của bạn cho mục đích phát triển.

Trong trường hợp của bạn: phút sdk phiên bản: 14 mục tiêu sdk: 17 biên dịch với: 14

Điện thoại của bạn sẽ hỗ trợ tất cả các phiên bản Android có mức api 14 (Ice Cream Sandwich) đến cấp api 17 (Jelly Bean 4.2). Và bạn đã sử dụng api level 14 (ICS) để biên dịch và chạy ứng dụng của bạn để phát triển.

Hy vọng điều này sẽ hữu ích.

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