2017-03-09 17 views
0

我在我的Android项目的以下情形:使用两个不同的构建gradle这个文件之间的默认值

PROJECT1 - >的build.gradle(1) Project2的 - >的build.gradle(2)

Example: Define the following variable: 

//first Gradle file 
def getProductFlavor() { 
//Logic here 
Gradle gradle = getGradle() 
String requestingTask = gradle.getStartParameter().getTaskRequests().toString() 
return requestingTask 
} 

Instead of defining getCurrentTime() in the second Gradle file, 
I call the getCurrentTime() from the first Gradle file. 

也许我的例子是错误的,默认值需要在另一个gradle文件(如脚本gradle或其他地方)中实现,但示例的目的是澄清我想实现的目标。

这两个项目是独立的,但都属于同一个android项目。我想在这两个gradle文件中使用一个def值。

顺便说一下,我是一个gradle新手。没关系,如果我以错误的方式提出这个问题。

+0

做这个价值,你需要得到这两个项目都需要一些环境或者它是独立于这两个项目的? – AdamSkywalker

+0

是的。所以我需要获得当前的产品风格。我使用productFlavors {A,B,C,..ect}在第一个构建gradle文件中定义产品风味。 –

+0

你能详细解释一下这个常用方法里面的代码吗? – AdamSkywalker

回答

2

感觉就像对外部脚本的情景:

main-project 
....| sub-project1 
........| src 
........| build.gradle 
....| sub-project2 
........| src 
........| build.gradle 
....| common.gradle 

的build.gradle

apply from: '../common.gradle' 

def flavor = getProductFlavor() 

common.gradle

def getProductFlavor() { 
    Gradle gradle = getGradle() 
    String requestingTask = gradle.getStartParameter().getTaskRequests().toString() 
    return requestingTask 
} 

ext { 
    getProductFlavor = this.&getProductFlavor 
} 
+0

当在common.gradle中的ext括号中添加“getProductFlavor”时,它将返回“分配给无效值”。 –

+0

@RedM编辑了答案,它现在应该工作。 – Opal

+0

@Opal哇,非常好:) – AdamSkywalker

相关问题