2016-09-20 73 views
4

我已經更新到Android Studio 2.2,它默認使用Gradle Plugin v2.2.0,並且對於調試目的來說更好。爲了解決問題,我仍然必須使用v2.1.3。我正在考慮在項目gradle腳本中添加一個條件命令,但我不知道如何去做。 下面的測試工作Gradle - 在buildscript依賴關係中添加條件類路徑

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (project.name.startsWith("X")) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
    } 
} 

但我需要的是像

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (IS_RELEASE_VERSION) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
    } 
} 

,我無法弄清楚如何做到這一點。 在此先感謝

+0

沒有想到會使這成爲可能。這裏真正的問題是:爲什麼你必須使用舊版本的發行版? –

+0

我們在我們的發行版中使用額外的插件,並且它只與2.1.3兼容。 – lionscribe

+0

然後您可能將不得不堅持使用舊版本。您不能使用不同的版本進行調試和發佈版本。如果它是關於你的build.gradle中的其他東西 - 比如一個庫版本或者一些設置 - 那麼它不會是一個問題。但buildscript依賴關係實際上是構建腳本本身的依賴關係。調試和發佈構建的概念是由構建腳本定義的,並且只有在加載構建腳本依賴關係之後才能對其進行評估。 –

回答

4

嗯,我相信我解決了它,它非常簡單。您需要檢查gradle.startParameter.taskNames屬性。下面是我如何編碼它:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (gradle.startParameter.taskNames.size() > 0 && gradle.startParameter.taskNames.get(0).contains("Release")) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

到目前爲止,它工作正常。如果您願意,可以將「發佈」值更改爲風味變體(如果您使用的是風味)。

+0

thx男人,非常有用! – vlasevich