Android 如何获取构建变量输出目录

Android 如何获取构建变量输出目录,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我需要运行一些在Android项目的assemble*任务完成后发生的任务。特别是,这些任务需要知道特定构建变量的所有编译类的输出目录。如何检索assembleFlavor1Debug任务的输出目录 我当前的解决方案是这样的(尽管该解决方案本身存在问题,例如,即使它被放置在android配置块之后,也无法找到组装任务): 编辑#1:我能够解决我的变通方法。主要问题是,尽管在Android配置块之后进行了配置,但项目中尚未创建Android assemble*任务(assembleProdDebu

我需要运行一些在Android项目的assemble*任务完成后发生的任务。特别是,这些任务需要知道特定构建变量的所有编译类的输出目录。如何检索assembleFlavor1Debug任务的输出目录

我当前的解决方案是这样的(尽管该解决方案本身存在问题,例如,即使它被放置在android配置块之后,也无法找到组装任务):

编辑#1:我能够解决我的变通方法。主要问题是,尽管在Android配置块之后进行了配置,但项目中尚未创建Android assemble*任务(assembleProdDebug、assembleProdRelease等)。通过将上面的整个代码片段封装到
gradle.taskGraph.whenredy{…}
块中,我能够获得Assembly*任务的附加配置,但这确实意味着我失去了继续配置依赖关系图的能力。幸运的是,在我的特殊情况下,没有配置依赖项并不是一个重大损失;我所需要的只是能够记录最后组装的构建类型和产品风格

我还想指出,Android Gradle插件的1.0.0版中存在这种行为。虽然我还没有检查,但这些Android任务的缺失可能不会出现在这个插件的较新版本上


编辑#2:所以我也尝试了Android Gradle插件的1.3.0版。我还想指出,这是库Android插件,而不是应用程序插件(我怀疑这些缺少的assemble*任务也不是在应用程序插件的项目配置期间生成的)。评估项目后,任务应该存在

这意味着您的闭包将在配置阶段结束时和执行阶段之前运行。此时,所有任务都必须注册

afterEvaluate { project ->
    // do work on `Project` object just like normal
    project.android.buildTypes.all { theBuildType ->
        ...
    }
}

参考:

谢谢!我可以使用afterEvaluate()配置任务依赖项。似乎在项目配置和afterEvaluate闭包执行之间的某个地方生成了额外的Android任务。
afterEvaluate { project ->
    // do work on `Project` object just like normal
    project.android.buildTypes.all { theBuildType ->
        ...
    }
}