运行 从应用程序 gradle 构建库作为 build.dependsOn libraryBuild 任务,不作为依赖项包含在应用程序 gradle 文件中

Run library build from app gradle as build.dependsOn libraryBuild task without including as dependency in app gradle file

在我的例子中,我将运行下面的命令

 ./gradlew -q projects

会return输出如下


根项目

Root project 'MyProject'
+--- Project ':app'
\--- Project ':mymodule'

现在我想构建(Run/Green 应用程序的播放图标)我的 ':app' 所以 ':mymodule' 应该自动构建 但不包括 ':mymodule' 作为 ':app' 级别 build.gradle

中的依赖项

在应用级别 build.gradle 文件中有这样的东西

task gradleBuild(type: GradleBuild ) {
    println "gradleBuild task start"
    doFirst{
        tasks=["mymodule:clean"]
        tasks = ["mymodule:build"]
    }
    doLast {
        tasks = ["mymodule:install"]
        println 'gradleBuild task end.'
    }

}

build.dependsOn gradleBuild

但它不起作用我收到如下错误消息

Task :app:gradleBuild FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Project 'mymodule' not found in project ':MyProject:app'.

settings.gradle我有这个

include ':app' , ':mymodule'

您要求自动构建库项目("mymodule" 在您的情况下)而不将其包含在应用程序模块 build.gradle 文件中,当我们按下 "Run/green Play " 图标时可以通过下面的方法。

一般运行图标会配置为单配置。这不在项目范围内,它在模块范围内。由于这个原因,当你按下图标时, "mymodule" 不会被构建,而如果你调用 1. gradlew 从命令行构建 2.同步项目 3. 点击制作项目

两个模块(app 和 mymodule)都已构建。

为了达到您的要求,我们必须在 Android studio 中编辑现有的应用程序配置以构建 "mymodule" lib 项目。

  1. 在应用中添加以下任务build.gradle
task buildModule(type: GradleBuild) {
    buildFile = '../mymodule/build.gradle'
    tasks = ['build']
}
  1. 点击工具栏中的编辑配置

  1. 单击 "Before launch section" 下的加号,然后 select 带有 "android" 图标的行。

  1. selecting后出现提示,在提示中输入“:app:buildModule”,然后按"OK"

  1. 最终UI将是

  2. 应用更改并按 "Run" 图标,就像您之前尝试的那样。这将自动构建 "mymodule"。