2017-03-09 48 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

相關問題