【问题标题】:Gradle - Add conditional classpath in buildscript dependenciesGradle - 在 buildscript 依赖项中添加条件类路径
【发布时间】:2017-01-28 21:39:56
【问题描述】:

我已更新到 Android Studio 2.2,它默认使用 Gradle Plugin v2.2.0,并且更适合调试目的。出于分发目的,我仍然必须使用 v2.1.3。我正在考虑在项目 gradle 脚本中添加一个条件命令,但我不知道该怎么做。 以下测试有效

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'
        }
    }
}

我不知道该怎么做。 提前致谢

【问题讨论】:

  • 没有什么能让这成为可能。这里真正的问题是:为什么必须使用旧版本来发布?
  • 我们在我们的版本中使用了一个附加插件,它只与 2.1.3 兼容
  • 那么您可能不得不坚持使用旧版本。您不能为调试和发布版本使用不同的版本。如果它与您的 build.gradle 中的其他内容有关 - 例如库版本或某些设置 - 那么它不会成为问题。但是 buildscript 依赖项实际上是构建脚本本身的依赖项。调试和发布构建的概念是由构建脚本定义的,在加载构建脚本依赖项之前无法对其进行评估。
  • 但是我可以想到一个解决方法:您可以在构建服务器上注入一个参数并在 if.xml 中使用它。在您的开发机器上,您可以将参数设置为主文件夹中 .gradle.properties 文件中的开发版本。然而,这并不是一个很好的解决方案......但它会起作用。
  • 这对我不起作用,因为我使用的是同一台机器。有没有办法设置一个标志(即使我必须编辑 gradle 文件)。我尝试使用def buildingDistributionVesrion = true;,但它在buildscripts 中不起作用,因为我相信buildscripts 是在定义之前处理的。

标签: android android-studio gradle android-gradle-plugin build.gradle


【解决方案1】:

好吧,我相信我已经解决了,而且非常简单。您需要检查 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'
    }
}

到目前为止,它工作正常。如果您愿意,可以将“Release”值更改为风味变体(如果您正在使用风味)。

【讨论】:

    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多