Android gradle - 根据市场构建

时间:2014-06-09 09:59:41

标签: android gradle android-studio android-gradle

我正在使用android-studio 0.5.9和gradle。我想为每个市场进行构建,所以我决定创建一些像这样的构建类型

buildTypes { englishAlpha { runProguard false packageNameSuffix '.alpha.en' versionNameSuffix '-DEV' signingConfig signingConfigs.debug zipAlign true } germanAlpha { runProguard false packageNameSuffix '.alpha.de' versionNameSuffix '-DEV' signingConfig signingConfigs.debug zipAlign true } englishBeta { runProguard false packageNameSuffix '.beta.en' signingConfig signingConfigs.debug } germanBeta { runProguard false packageNameSuffix '.beta.de' signingConfig signingConfigs.debug } }

问题是当我想要更新drawables(每个市场都有自己的drawables)时,我必须立即更新两个目录(alpha& beta)和三个稍后(发布)一个市场。

是否有办法在所有buildVariant的两个目录(EN和DE)中包含所有drawable?

提前谢谢

1 个答案:

答案 0 :(得分:1)

您可以将产品flavor与buildTypes结合使用来创建buildVariant。 buildVariants将是笛卡尔积:buildType X productFlavor

在您的情况下,创建2种产品风格:alphabeta以及2种构建类型:germanenglish

packageNameSuffix仅在buildType中允许。 您可以在flavor中使用packageName,因此build.gradle必须如下所示:

android {
    productFlavors {
        alpha {
            packageName 'com.company.alpha'
        }

        beta {
            packageName 'com.company.beta'
        }
    } 
    buildTypes {
        english {
            packageNameSuffix '.en'
        }

        german {
            packageNameSuffix '.de'
        }
    }
 }

如果你放置了drawables:

  • for src/english/res/drawable-*/
  • 中的英语构建类型
  • for src/german/res/drawable-*/
  • 中的德语构建类型
  • 以及src/main/res/drawable-*/
  • 中的常见问题

这将为您提供4种构建变体,其中包含2组不同的drawable(一种用于英语,一种用于德语)