2016-11-10 1939 views
2

這次我遇到了這個問題,我試圖在gradle腳本中獲取當前的風格。我試過這裏給出的答案How to get current flavor in gradle 沒有運氣。如何獲得在Gradle腳本中運行Android Flavor名稱

在一些答案,他們使用

// Get all flavors 
android.productFlavors.all { flavor -> 
if (flavor.name.equals("flavorName")) { 
    // do what you like 
} 
// ... 
} 

而且我沒有與任何運氣看到我的避風港,因爲我得到以下錯誤:>任務

無法獲取不明財產「機器人」

所以我不知道如何獲得目前的味道,任何幫助將非常感謝!

編輯:我需要做的是執行一段代碼,每個代碼都是不同的,我目前的想法是知道選擇的構建變體在任務中執行此操作,但是如果有任何其他方法這樣做是完美的。

+0

「我正在嘗試在gradle腳本中獲取當前的風味」 - 沒有「當前的風味」。 'build.gradle'文件不會構建您的應用程序。它構建了一個描述如何構建應用程序的對象模型。當你打開你的項目或者當你的項目與你的Gradle構建文件同步時,腳本就會運行,並且在那個時候,所有的風格都是「最新的」。 「因爲我得到以下錯誤」 - 那麼也許你在錯誤的地方有這樣的代碼。編輯你的問題併發布整個'build.gradle'文件。 – CommonsWare

+0

你把哪行代碼放在哪裏?哪個build.cradle文件? –

+0

我在錯誤的地方添加了代碼行,這就是爲什麼我得到了這個錯誤,謝謝!但我仍然有這個問題,我怎麼能得到選擇的構建變體或選擇的項目在gradle任務falvor? – acabezas

回答

0

如果您在應用程序級別gradle腳本中使用「android」關閉,則可能會出現此錯誤。請確保您使用它裏面

+0

你是正確的條件或依賴,我在android閉包之外使用它,但問題仍然存在,我如何才能知道Gradle任務中項目的選定構建變體? – acabezas

+0

如果我瞭解正確的當前項目風格,您可以在Build Variant選項卡中找到它。如果使用的是Android的開放工作室建設 - >選擇構建變量... –

+0

這是正確的,但我想知道在gradle這個任務的構建變量,因爲這取決於所選的味道,我需要做不同的事情 – acabezas

0

我已經發布了一個工作解決方案here,那就是:

下面的函數返回完全當前風味名

def getCurrentFlavor() { 
    Gradle gradle = getGradle() 
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString() 

    Pattern pattern; 

    if(tskReqStr.contains("assemble")) 
     pattern = Pattern.compile("assemble(\\w+)(Release|Debug)") 
    else 
     pattern = Pattern.compile("generate(\\w+)(Release|Debug)") 

    Matcher matcher = pattern.matcher(tskReqStr) 

    if(matcher.find()) 
     return matcher.group(1).toLowerCase() 
    else 
    { 
     println "NO MATCH FOUND" 
     return ""; 
    } 
} 

您還需要

import java.util.regex.Matcher 
import java.util.regex.Pattern 

在開始或您的腳本。 在Android Studio中,通過編譯「Make Project」或「Debug App」按鈕來工作。

相關問題