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