当我用android studio构建项目时,我希望能够运行lint任务,以确保遵循lint规则.
我尝试过使用任务依赖但没有运气.我的teamcity构建服务器使用运行lint任务的构建任务,因此效果很好.但是,当我选择调试版本变体时,android studio似乎可以互换使用generateDebugSources和compileDebugJava任务.
这是我在build.gradle中尝试过的:
assemble.dependsOn lint
Ross Hambric.. 35
如果您只想将Android Studio项目配置为在默认运行配置之前运行lint检查,而不影响您的gradle任务的配置方式,则可以按照以下步骤操作.
打开运行配置下拉菜单并选择编辑
选择您的应用运行配置
按"+"添加新步骤
选择"Gradle-aware Make"
输入"check"并选择包含您的应用模块名称的选项并进行检查.(我的是:app:check
)
按向上箭头可check
在现有Gradle-aware make
步骤之前移动新步骤
现在,如果发生任何lint错误,Android Studio将运行lint检查并使构建失败.
如果您只想将Android Studio项目配置为在默认运行配置之前运行lint检查,而不影响您的gradle任务的配置方式,则可以按照以下步骤操作.
打开运行配置下拉菜单并选择编辑
选择您的应用运行配置
按"+"添加新步骤
选择"Gradle-aware Make"
输入"check"并选择包含您的应用模块名称的选项并进行检查.(我的是:app:check
)
按向上箭头可check
在现有Gradle-aware make
步骤之前移动新步骤
现在,如果发生任何lint错误,Android Studio将运行lint检查并使构建失败.
要破坏lint并分析你的项目,只需选择Analyze > Inspect Code
.
你应该得到一个包含所有问题的好窗口.
另请参阅Android Studio中的运行lint以获取更多信息.
我做了一些研究,试着把它添加到你的build.gradle
.
lintOptions { abortOnError true }
有许多选项可以应用于build.gradle
要在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) }
只需运行"检查"任务
./gradlew clean check assembleRelease
如果您想强制Android Studio项目在默认运行配置之前运行lint检查,而不影响gradle任务的配置方式,并且想要在gradle构建系统中执行此操作,则可以在代码块外部添加以下代码android
块在应用程序模块的build.gradle中,如下所示:
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上运行