android - 来自命令行和 Android Studio 的 Android Lint 不匹配
问题描述
我有一个模块,我知道它包含一些未使用的颜色资源。当我从 Android Studio 运行 lint 时,它包含了我期望的输出。但是,当我从命令行运行它时,它找不到这些未使用的资源。
如何让命令行报告这些未使用的资源(最好作为警告)?
从 Android Studio 运行 lint
按名称运行检查:
输出:
从命令行运行 lint(使用 gradle)
我的 build.gradle 配置:
lintOptions {
check 'UnusedResources'
}
实际运行任务:
$ ./gradlew :lib:lint
> Task :lib:lint
Ran lint on variant release: 0 issues found
Ran lint on variant debug: 0 issues found
BUILD SUCCESSFUL in 2s
我知道 gradle 配置正在“工作”,因为如果我删除该check 'UnusedResources'
行,它会发现其他问题(check
使其只运行一次检查)。还值得注意的是,指定check 'ThisIsObviouslyNonsense'
给出了相同的输出(发现零问题的“成功”运行)。
重现问题
我无法提供真正的源代码,但在新项目中重现问题非常简单。
- 使用 Android Studio 向导创建一个新项目。(我选择了“Empty Activity”、Kotlin 和 19 的最小 API。)
- 将此添加到您的 colors.xml 中:
<color name="unused">#f00</color>
- 打开
app/build.gradle
并执行以下操作:- 更改
apply plugin: 'com.android.application'
为apply plugin: 'com.android.library'
- 删除该
applicationId
行defaultConfig
- 将此
lintOptions
块添加到android
块中:
- 更改
lintOptions {
check 'UnusedResources'
}
现在转到命令行并运行./gradlew lint
. 您将看到 0 个问题。
值得注意的是,在将模块转换为库之前,一切似乎都可以正常工作(运行 lint 可以很好地检测到未使用的颜色资源)。这可能与图书馆资源被认为是“公共的”这一事实有关......但在我的真实图书馆中,我们已经明确声明资源默认是私有的。
解决方案
推荐阅读
- android - 如何设置材质滑块的标签边距?
- bash - 如何压缩和忽略 .gitignore 指定的所有文件
- django - 使用信号创建 django 通知
- javascript - px/em fabricjs 中的 StrokeWidth 值
- c# - 检查 if 语句中的每个数组成员以查找特定的数组成员
- python - RuntimeError: __iter__() 仅在 tf.function 内部或启用急切执行时受支持。(张量流 2.3.0)
- postgresql - pgAdmin 中的存储管理器
- javascript - 我的 switch 语句没有给出预期的结果
- arrays - 如何在 MPI 程序中正确释放数组
- python - Selenium 命令崩溃