我希望能够在使用android studio构建项目时运行lint任务,以确保遵循lint规则。
我尝试过使用任务依赖但没有运气。我的teamcity构建服务器使用运行lint任务的构建任务,因此效果很好。但是,当我选择调试版本变体时,android studio似乎可以互换使用generateDebugSources和compileDebugJava任务。
以下是我在build.gradle中尝试的内容:
assemble.dependsOn lint
答案 0 :(得分:32)
如果您只想将Android Studio项目配置为在默认运行配置之前运行lint检查,而不影响您的gradle任务的配置方式,则可以按照以下步骤操作。
:app:check
)
check
步骤之前移动新的Gradle-aware make
步骤
现在,如果发生任何lint错误,Android Studio将运行lint检查并使构建失败。
答案 1 :(得分:29)
要破坏lint并分析您的项目,只需选择Analyze > Inspect Code
。
你应该得到一个包含所有问题的好窗口。
另请查看Run lint in Android Studio以获取更多信息。
我做了一些研究,尝试将其添加到build.gradle
。
lintOptions {
abortOnError true
}
您可以将许多options应用于build.gradle
答案 2 :(得分:12)
要在build.gradle中执行此操作,请将以下行添加到build.gradle:
android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def lintTask = tasks["lint${variant.name.capitalize()}"]
output.assemble.dependsOn lintTask
}
}
...
}
这使得所有汇编任务都依赖于在Android Studio执行的每个汇编调用之前有效运行它们的lint任务。
修改强>
使用Android Gradle Plugin 3.3和Gradle 5.x这是使用Kotlin脚本的修订版本:
applicationVariants.all {
val lintTask = tasks["lint${name.capitalize()}"]
assembleProvider.get().dependsOn.add(lintTask)
}
答案 3 :(得分:7)
只需运行"检查"任务
./ gradlew clean check assembleRelease
答案 4 :(得分:4)
如果您想强制Android Studio项目在默认运行配置之前运行lint检查而不影响您的gradle任务的配置方式,并且您希望在gradle构建系统中执行此操作,那么您可以在外部添加以下块应用程序模块的build.gradle中android
块的大小如下:
android {
....
lintOptions {
abortOnError true
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'compileDevDebugSources') {
task.dependsOn lint
task.mustRunAfter lint
}
}
将compileDevDebugSources
替换为您已定义的所需构建变体,例如。 compileReleaseSources
,compileDebugSources
,compileStagingDebugSources
等
这是在Android Studio 3.0上测试的
答案 5 :(得分:3)
这是我的解决方案,当你在Android Studio中点击 Build - Make Project 时也可以使用
android {
..
afterEvaluate {
applicationVariants.all {
variant ->
// variantName: e.g. Debug, Release
def variantName = variant.name.capitalize()
// now we tell gradle to always start lint after compile
// e.g. start lintDebug after compileDebugSources
project.tasks["compile${variantName}Sources"].doLast {
project.tasks["lint${variantName}"].execute()
}
}
}
}
答案 6 :(得分:1)
只需修改@Yoel Gluschnaider的答案
对我来说,如果使用val,它将显示如下错误: 无法为com.android.build.gradle.internal.api.ApplicationVariantImpl类型的对象设置未知属性“ lintTask”。
所以我替换它
applicationVariants.all {
def lintTask = tasks["lint${name.capitalize()}"]
assembleProvider.get().dependsOn.add(lintTask)
}
及其工作正常!