2016-09-20 149 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