2016-09-26 15 views
0

在Android中,我們想使一個應用程序建立與不同的應用程序ID依賴於預先安裝的應用程序包。 因此,它包含有不同的applicationID設置構建gradle這個味道。如何使有條件的編譯工作在Android上構建gradle這個

但我們不希望所有這些味道已經建立,我們只是想只能建基於預先安裝的應用程序包的名稱以節省某個時候生成服務器上的一個。

如果使用

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

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

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

然後叫prepareTest時,既prepareAprepareB將與這兩個assembleADebug和執行assembleBDebug執行。

我只想生成prepareAprepareB基於一個條件檢查(如果...)執行。

回答

0

我幾個小時後發現實物指標調查的答案,那就是我們可以使用afterEvaluate方法,它會dependsOn運行前執行。

卸下預定dependsOn所述的prepareA和prepareB。

Then 

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