2012-05-24 25 views
13

Vì vậy, tôi hơi bối rối, tôi nghĩ rằng tôi hiểu ý nghĩa của android:minSdkVersion, android:targetSdkVersiontarget trong thuộc tính dự án.Quan hệ giữa android: minSdkVersion, android: targetSdkVersion và "target"

Ngay bây giờ tôi có những thiết lập để:

android:minSdkVersion="7" 
    android:targetSdkVersion="13" 

Và:

target=android-15 

trong project->properties->Android->Project Build Target.

Khi tôi cố gắng chạy ứng dụng này trên thiết bị có cài đặt Android 2.3.3, tôi thấy chữ thập đỏ trên tên thiết bị nhưng ứng dụng chạy tốt trên đó không kém.

Tôi đang thiếu gì? Nếu tôi đang xây dựng chống lại 15, làm thế nào là nó chạy trên android-7? Sự nhầm lẫn này được nêu sau khi tôi tích hợp AdMob vào ứng dụng của tôi, trong đó nêu rõ yêu cầu cấp SDK tối thiểu 13.

Trả lời

22

Để diễn tả cùng một lúc:

  • android: minSdkVersion giúp ứng dụng Google Play lọc cho người dùng dựa trên thiết bị của họ. Ví dụ: với minSdkVersion = "7", người nào đó duyệt bằng thiết bị chỉ hỗ trợ 6 sẽ không thấy ứng dụng của bạn trên Google Play và do đó sẽ không tải xuống ứng dụng, tìm thấy ứng dụng không hoạt động và để lại đánh giá sai:)

  • android: targetSdkVersion là tín hiệu cho thiết bị về phiên bản API mà ứng dụng của bạn đã được thử nghiệm. Hành vi mới thường có sẵn theo mặc định với phiên bản mới của nền tảng, cho các ứng dụng nhắm mục tiêu ít nhất phiên bản nền tảng đó. Ví dụ, bằng cách thiết lập targetSdkVersion của bạn đến 11 hoặc cao hơn, bạn nhận được một menu tràn trong ActionBar (cho Honeycomb và lên thiết bị) thay vì "nút menu cũ của sự xấu hổ".

  • mục tiêu dự án.properties là một tín hiệu cho hệ thống xây dựng cục bộ của bạn về phiên bản nền tảng bạn nên biên dịch mã của mình. Nói chung tốt nhất là bạn chỉ cần đặt điều này thành bất kỳ thứ gì bạn đã đặt cho targetSdkVersion.

Tôi đang thiếu gì? Nếu tôi đang xây dựng chống lại 15, nó hoạt động như thế nào trên android-7?

Android duy trì tính tương thích ngược chỉ vì lý do này. Khi bạn sử dụng API đã được thêm vào trong phiên bản 15 của nền tảng, rõ ràng là chúng sẽ không có trên thiết bị chạy một thiết bị cũ hơn. Tuy nhiên, có thể (và khuyến khích) thiết kế ứng dụng của bạn theo cách như vậy để tận dụng các tính năng được thêm vào nền tảng mới, nhưng "làm suy giảm một cách duyên dáng" sao cho ứng dụng của bạn tiếp tục chạy trên các phiên bản cũ hơn. Có một bài học về Đào tạo Android về chủ đề này, được gọi là Supporting Different Platform Versions.

1

android:minSdkVersion="7" có nghĩa là bạn không thể chạy ứng dụng này trong các thiết bị dưới . android:targetSdkVersion="13" ứng dụng được xây dựng để nhắm mục tiêu API này. mục tiêu xây dựng sẽ được đặt thành 13 và các phương thức và nội dung sẵn có cho đến 13 sẽ hoạt động.

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

1

android: targetSdkVersion = "13" Ngụ ý rằng ứng dụng này đã được xây dựng bằng cách giữ sdk 13 như mục tiêu, sử dụng tính năng của nó để đầy đủ tiềm năng

android: minSdkVersion = "7" chỉ rằng nó hoạt động trên sdk 7 trở lên, nhưng một số tính năng của nó có thể bị tước bỏ nếu một số tính năng không có sẵn trong sdk thấp hơn. tức là (ít hơn sdk 13)

+0

Tôi đoán sự nhầm lẫn của tôi phát sinh từ thực tế là trong ảnh chụp màn hình ở trên, có một dấu chữ thập đỏ đối với thiết bị 2.3.3. Tôi nghĩ rằng nó đang cố gắng nói với tôi rằng ứng dụng sẽ không chạy trên thiết bị này và nó vẫn hoạt động. –

+0

bạn đã thử khởi động lại nhật thực và trình mô phỏng ... cả hai. ? –

+0

Yup. Luôn luôn giống nhau. –

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