使用不遵守@Intdef注释的代码在发布模式下使Gradle构建失败

时间:2014-11-14 23:35:39

标签: android gradle annotations

标题总结得很好。

我正在使用@Intdef注释来定义哪些常量可以用作params或在某些方法中返回值,如下所示:

@Retention(RetentionPolicy.SOURCE)
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
public @interface NavigationMode {}

public static final int NAVIGATION_MODE_STANDARD = 0;
public static final int NAVIGATION_MODE_LIST = 1;
public static final int NAVIGATION_MODE_TABS = 2;

@NavigationMode
public  int getNavigationMode() {
    return NAVIGATION_MODE_LIST;
}

public void setNavigationMode(@NavigationMode int mode) {
    mNavigationMode = mode;
}

作为测试,我添加了这个电话:

setNavigationMode(5);

Android Studio将其显示为错误,这很好,但我还想让Gradle构建检查此发布版本的lint规则(我不想通过lint检查来延长调试版本)。

所以,我已经将它添加到我的build.gradle:

lintOptions {
        abortOnError true
        checkReleaseBuilds true
        fatal 'NewApi', 'InlineApi', 'ResourceType'
    }

但是,Gradle编译此项目时未检测到此错误 我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

使用android gradle插件的1.3.0-beta1版本,我们现在对IntDef注释进行了Lint检查。

答案 1 :(得分:2)

comment on this Google+ post Tor Norbye解释说,ResourceType检查是建立在IntelliJ之上的,目前不适用于lint。它可能在将来。