如何在android build gradle上创建条件构建任务

时间:2016-09-26 11:29:10

标签: android gradle

在android中,我们希望使用不同的应用程序ID构建一个应用程序,具体取决于预安装的应用程序包。 因此它在构建gradle中包含不同applicationId设置的风格。

但我们不希望所有这些风格都被构建,我们只想基于预先安装的应用程序包名称构建一个,以便在构建服务器上节省一些时间。

如果使用

task prepareA(dependsOn:['assembleADebug']){}

task prepareB(dependsOn:['assembleBDebug']){}

task prepareTest(dependsOn:['prepareA', 'prepareB']) {}

然后,在调用prepareTest时,执行prepareAprepareB时都会执行assembleADebugassembleBDebug

我只想根据一个条件检查(如果......)来构建prepareAprepareB

1 个答案:

答案 0 :(得分:0)

我在几个小时的调查后发现的答案是,我们可以使用afterEvaluate方法,它将在dependsOn运行之前执行。

删除预定义的dependsOn中的prepareA和prepareB。

Then

afterEvaluate {
    if (isPackageInstalled(packageName)) {             
        tasks.findByName("prepareTest").dependsOn("prepareA")
    } else {
        tasks.findByName("prepareTest").dependsOn("prepareB")
    }
}