是否可以针对不同的产品口味使用不同的build.gradles?

时间:2015-08-19 18:35:39

标签: android gradle android-gradle build.gradle

我正在开发的项目是为基于亚马逊的设备和Android而构建的。几乎95%的代码库在这两者之间是通用的。因此,我没有将这两个项目作为不同的项目,而是考虑将这两个项目放在一起使用产品风格。(如果有其他更好的解决方案,请告诉我)

但我面临的问题之一是build.gradle中的buildscript和android属性,我需要亚马逊和Android的不同值。 例如,我需要Android for Android

dependencies { classpath 'com.android.tools.build:gradle:1.1.3' }

这适用于亚马逊

dependencies { classpath 'com.amazon.device.tools.build:gradle:1.0.0' }

同样适用于compileSdkVersion和buildToolsVersion。

如果我需要为每个构建两个不同的build.gradles,我应该如何根据构建风格选择其中一个? (我不确定它是否真的可能)

如果没有,通过将所有内容放在同一个项目中,是否真的有更好的解决方案来解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:3)

这应该是一个评论,但它太长了 如果它不提供帮助,我会删除它。

据我所知,您的产品口味不能有build.gradle 但是,您应该能够调整buildscriptcompileSdkVersion

它不是那么干净但你可以使用类似的东西:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    if (condition) {
        dependencies {
            classpath 'com.android.tools.build:gradle:1.3.0+'
        }
    } else if (condition) {
        dependencies {
            classpath 'com.amazon.device.tools.build:gradle:1.1.3'
        }
    }
}

android {
    if (condition) {
        compileSdkVersion 23
    } else if (condition) {
        compileSdkVersion "Amazon.com:Amazon Fire Phone SDK Addon:XX"            
    }
  //...
}