我希望每个构建类型都有不同的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
答案 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任务指定的选项。