如何确保Android中未调用不受支持的(更高级别)API?

时间:2013-06-12 00:46:29

标签: android intellij-idea lint

我正在为我的AndroidManifest.xml中的minSdkVersion=10targetSdkVersion=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)

2 个答案:

答案 0 :(得分:7)

您可以(应该)运行Android Lint来检查:

右键单击项目(或包,类)>分析>检查代码。

enter image description here

答案 1 :(得分:2)

在Eclipse Properties中 - > Android Lint偏好设置 - > NewApi并将严重性更改为错误。