每种构建类型有不同的lint-options

时间:2017-01-30 10:52:35

标签: android-gradle lint

我希望每个构建类型都有不同的lint选项。 我试着简单地将选项添加到相应的构建类型中,如下所示:

android {    
    buildTypes {
        debug {
            lintOptions {
                textReport true
                textOutput 'stdout'
                warningsAsErrors false
                abortOnError true
            }
        }
        release {
            lintOptions {
                textReport true
                textOutput 'stdout'
                ignoreWarnings false
                warningsAsErrors true
                abortOnError true
            }
        }
    }

但是这不能按预期工作: 例如在我的项目中,我有一些lint警告,但没有错误。因此,我希望

./gradlew lintRelease

失败,但

./gradlew lintDebug

成功(当然有警告)。 但这种情况并非如此。使用上面显示的配置,两个构建都失败。

奇怪的是,它取决于订单:例如当我在debug {}之后移动整个release {}块时,两个构建总是成功:所以似乎只使用了最新的选项......

我错过了什么 - 或者如何解决这个问题?

我使用gradle版本3.3

2 个答案:

答案 0 :(得分:0)

作为一种解决方法,我们可以使用gradle属性,我们可以将其设置为“debug”/“release”:如下所述:Gradle plugin does not propagate debug/release to dependencies - Comment#91

e.g。在项目的gradle.properties文件中定义一个变量:

myBuildType=debug

这将确保默认构建类型为“debug”。您可以通过gradle命令行参数

覆盖它
./gradlew.bat -PmyBuildType=release ...

并在项目或子项目的build.gradle文件中:

warningsAsErrors rootProject.properties['myBuildType'] == 'release'

答案 1 :(得分:0)

This answer may be helpful to you.

我以不同的方式解决了这个问题。

将此任务添加到android {}块后的应用程序build.gradle中。

task setReleaseLintOptions {
    doLast {
        configure(android.lintOptions) {
            // Put your specific lintOptions here
            check 'ExtraTranslation', 'MissingTranslation', 'Untranslatable'
        }
    }
}

task setDebugLintOptions {
    doLast {
        configure(android.lintOptions) {
            // Put your specific lintOptions here
            check 'MissingDefaultResource', 'UnusedResources'
        }
    }
}

然后,您可以在运行lint任务之前手动运行这些任务,以在运行之前配置lint选项...

.gradlew setReleaseLintOptions lintRelease

.gradlew setDebugLintOptions lintDebug

这将运行我们的自定义任务中为lintRelease或lintDebug任务指定的选项。