Android Studio中不同构建类型的不同lint.xml?

Pri*_*off 13 lint android-studio android-gradle-plugin

我想在Android Studio中使用不同的lint.xml文件来发布调试构建类型.那么,如何实现呢?

当我将lint.xml放在someModule/src/debugsomeModule/src/release文件夹中时(也就是说,这些文件夹只包含那个lint.xml文件而已),gradle会做出反应,因为没有任何lint.xml文件,如果我放置核心模块文件夹下的单个lint.xml文件(someModule /) - gradle识别它,但在这种情况下我不能使用不同的设置,具体取决于构建类型...

The*_*mer 5

以下是对我有用的内容:

tasks.whenTaskAdded { task ->
    if (task.name.startsWith("lint")) {
        if (task.name.toLowerCase().endsWith("release")) {
            task.doFirst {
                android.lintOptions.abortOnError = true
            }
        } else {
            task.doFirst {
                android.lintOptions.abortOnError = false
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我需要打开abortOnError发布版本,以便我可以自由开发,但在我的 CI 上快速捕获 lint 错误(如果它们滑倒了)。


Lod*_*oda 4

我没有尝试过,但也许这样的事情可以帮助你。

tasks.whenTaskAdded { task ->
    if (task.name == 'lintDebug') {
        task.ext.lintXmlFileName = "lint-debug.xml"
    } else if (task.name == 'lintDemo') {
        task.ext.lintXmlFileName = "lint-demo.xml"
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:评论反馈:

  • task.ext.xxxx 是供您使用的自定义名称空间:请参阅https://docs.gradle.org/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html
  • “lintXmlFileName”是一个虚构的名称。你不会找到关于它的文档。
  • 在 android{... lintOptions {... lintConfig file("lint.xml")}} 中,您需要使用“.ext.get("lintXmlFileName")”读取“lintXmlFileName”并将其设置为“lintConfig file()” ”
  • 我没有测试它,但我假设“whenTaskAdded”超出了应用程序的build.gradle中的“android”。