我正在为我的AndroidManifest.xml中的minSdkVersion=10
和targetSdkVersion=17
构建Gingerbread应用程序。
我知道在调用之前我应该检查API是否受支持,例如:
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);
}
}
但有时我会忘记/或者不知道我正在调用更高级别的API,偶尔会因NoSuchMethodError
异常而导致程序崩溃。
所以在我发布我的应用程序之前,我总是将我的项目设置为使用Android SDK 2.3.3,并确保我没有进行非法的方法调用(例如,我得到的所有错误都包含在if
语句中检查android SDK版本),然后将SDK设置回4.2.2。
有没有更好的方法可以确保在不切换SDK的情况下不会调用不支持的API?
(P.S。我正在使用IntelliJ)
答案 0 :(得分:7)
您可以(应该)运行Android Lint来检查:
右键单击项目(或包,类)>分析>检查代码。
答案 1 :(得分:2)
在Eclipse Properties中 - > Android Lint偏好设置 - > NewApi并将严重性更改为错误。