2010-05-03 50 views
5

Ai đó có thể giải thích cho tôi sự khác biệt giữa mục tiêu dự án và SDK tối thiểu? Tôi muốn ứng dụng của mình chạy trên các thiết bị Donut và APK tôi đã tạo với mục tiêu 7 hoạt động tốt. Khi tôi đặt một SDK tối thiểu rõ ràng trong bản kê khai Android của 4 (1.6) trình biên dịch bitched với tôi rằng mục tiêu vượt quá mức tối thiểu. Tôi thiết lập lại các mục tiêu đến 4 chỉ để xem những gì sẽ xảy ra, và bây giờ tôi đã có lỗi trình biên dịch. Ví dụ là hằng số START_NOT_STICKY trong android.app.Service. Nó không tồn tại trong API cấp 4, nhưng tồn tại ở cấp API 7. Đây cũng là trường hợp với Service.onStartCommand(). Trong API cấp 7, bạn cần phải ghi đè lên phương thức này, trong khi ở cấp API 4 bạn thì không.Mục đích của cả hai API mục tiêu và minSDK

Vậy tại sao ứng dụng hoạt động ở mức 1,6 mặc dù tất cả điều này? Làm thế nào 1,6 có thể biết cách sử dụng SERVICE_NOT_STICKY khi cấp API liên quan không biết về nó?

Trả lời

4

Nếu bạn muốn sử dụng một số tính năng ưa thích mới, nhưng cũng muốn duy trì khả năng tương thích ngược đó là nơi targetSdkVersion và minSdkVersion được phát.

Để duy trì khả năng tương thích ngược, bạn cần xử lý mọi API mới từ trên minSdkVersion một cách cẩn thận. Tức là kiểm tra kỹ xem bạn có quyền truy cập vào chúng hay không bằng cách sử dụng phản chiếu hoặc sử dụng Build.VERSION.SDK_INT. Nếu bạn không làm điều đó, ứng dụng của bạn sẽ bị lỗi và ghi vì không thể tìm thấy API bạn đang cố sử dụng.

Bạn cũng muốn đọc mọi dòng tài liệu liên quan đến các API đã thay đổi (tức là Service .onStartCommand (..)) để bạn có thể xử lý mọi phần dữ liệu được chính xác và theo cách tương thích ngược.

Về hằng số, chúng có nhiều khả năng được biên dịch vào mã của bạn dưới dạng Chuỗi/số nguyên và khi phiên bản cũ không rõ, nó chỉ bỏ qua nó. Tuy nhiên đó là một lý thuyết, vì vậy bạn nên thử nghiệm nó trước khi sử dụng nó rộng rãi.

Ngoài ra, theo như tôi biết hệ thống không kiểm tra minSdkVersion hoặc targetSdkVersion. Chỉ có Android Market thực hiện điều đó. Vì vậy, nếu bạn nhận được một tổ chức của một số ứng dụng mà không phải chạy trên thiết bị của bạn và bạn vẫn cố gắng sử dụng chúng, một lần nữa sụp đổ và ghi.

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