9

我正在为 Gingerbread 和更高版本构建一个应用程序,minSdkVersion=10targetSdkVersion=17在我的 AndroidManifest.xml 中。

我知道我应该在调用 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?

(PS 我正在使用 IntelliJ)

4

2 回答 2

7

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

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

在此处输入图像描述

于 2013-06-12T00:55:05.577 回答
2

在 Eclipse Properties --> Android Lint Preferences --> NewApi 中,将 Severity 更改为 Error。

于 2013-06-12T01:44:09.277 回答