在android中,我们希望使用不同的应用程序ID构建一个应用程序,具体取决于预安装的应用程序包。 因此它在构建gradle中包含不同applicationId设置的风格。
但我们不希望所有这些风格都被构建,我们只想基于预先安装的应用程序包名称构建一个,以便在构建服务器上节省一些时间。
如果使用
task prepareA(dependsOn:['assembleADebug']){}
task prepareB(dependsOn:['assembleBDebug']){}
task prepareTest(dependsOn:['prepareA', 'prepareB']) {}
然后,在调用prepareTest
时,执行prepareA
和prepareB
时都会执行assembleADebug
和assembleBDebug
。
我只想根据一个条件检查(如果......)来构建prepareA
或prepareB
。
答案 0 :(得分:0)
我在几个小时的调查后发现的答案是,我们可以使用afterEvaluate方法,它将在dependsOn运行之前执行。
删除预定义的dependsOn中的prepareA和prepareB。
Then
afterEvaluate {
if (isPackageInstalled(packageName)) {
tasks.findByName("prepareTest").dependsOn("prepareA")
} else {
tasks.findByName("prepareTest").dependsOn("prepareB")
}
}