繁体   English   中英

如何在一个命令中为所有产品风格运行 lint - Android?

[英]How to run lint for all product flavours in one command - Android?

我已经为我的项目实施了产品风味。 我正在同一个代码库中构建三个新应用程序。

在 gradle 同步之后,已经生成了三种不同的风格,比如flavor1Debugflavor1Releaseflavor2Debugflavor2Release

我已将所有风味特定资源移动到风味特定 res 文件夹中。 当我尝试运行./gradlew lintRelease (应该为flavor1Releaseflavor2Release运行 lint )时,它没有检测到任何错误

为了测试 lint,我在flavor1flavor2res文件夹中引入了一个未使用的资源。 我尝试运行./gradlew lintFlavor1Release./gradlew lintFlavor2Release ,它分别检测错误和抛出。

但是./gradlew lintRelease没有抛出任何错误。 我哪里错了?

尝试这样的事情:

制作一个自定义 gradle 任务,该任务将分别运行所有这些 lint 任务。

tasks.register("runAllLinters")

afterEvaluate {

    if ("lintFlavor1Release" in tasks.names) {
        runAllLinters.dependsOn tasks.named("lintFlavor1Release")
    }
}

当然,这只会触发 Flavor1 - 因此您需要扩展if()条件和runAllLinters.dependsOn块以依赖于所有依赖于风味的 lint 任务。

最后,您应该能够像./gradlew runAllLinters一样运行它

尝试这个:

afterEvaluate {
    def LINT_TASK_NAME = "lint"
    def lintTask = tasks.findByName(LINT_TASK_NAME)
    tasks.findAll { task ->
        task.name.startsWith(LINT_TASK_NAME) &&
                task.name != LINT_TASK_NAME &&
                // remove some standard lint subtasks
                !task.name.startsWith("lintFix") &&
                !task.name.startsWith("lintAnalyze")
    }.each { task -> lintTask.dependsOn.add(task) }
}

这使得任务“lint”依赖于除某些标准之外的所有其他“lintXxxx”任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM