Tôi đang tạo ứng dụng cho Gingerbread và lên với minSdkVersion=10
và targetSdkVersion=17
trong tệp AndroidManifest.xml của mình.Làm cách nào để đảm bảo API không được hỗ trợ (cấp cao hơn) không được gọi trong Android?
Tôi biết rằng tôi nên kiểm tra nếu các API được hỗ trợ trước khi tôi gọi nó, ví dụ:
private void removeRule(RelativeLayout.LayoutParams params, int rule) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { // API 17
params.removeRule(rule);
} else {
params.addRule(rule, 0);
}
}
Nhưng đôi khi tôi quên/hoặc không biết tôi đang kêu gọi một mức độ cao hơn API và thỉnh thoảng làm hỏng chương trình của tôi với ngoại lệ NoSuchMethodError
. Vì vậy, trước khi xuất bản ứng dụng, tôi luôn đặt dự án của mình sử dụng Android SDK 2.3.3 và đảm bảo rằng tôi không thực hiện các cuộc gọi phương pháp bất hợp pháp (ví dụ: tất cả các lỗi tôi nhận được được bao gồm trong câu hỏi if
kiểm tra Android Phiên bản SDK), sau đó đặt SDK trở lại phiên bản 4.2.2.
Có cách nào tốt hơn để đảm bảo API không được hỗ trợ không được gọi mà không cần chuyển SDK?
(T.B. Tôi đang sử dụng IntelliJ)
Câu trả lời đúng là "Sử dụng Lint" (http://developer.android.com/tools/debugging/improving-w-lint.html) vì nó sẽ cho bạn biết khi bạn sử dụng một cái gì đó mới hơn so với 'android: minSdkVersion của bạn ', nhưng tôi không chắc liệu có tích hợp IntelliJ cho điều đó chưa. Nếu không, bạn sẽ cần phải chạy nó từ dòng lệnh. – CommonsWare