【发布时间】:2015-01-08 23:14:24
【问题描述】:
目前我正在开发一个有 5 种风格的应用程序,这是我的 build.gradle 文件中重要的部分:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.0'
}
}
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
signingConfigs {
release {
storeFile file("")
storePassword "password"
keyAlias "alias"
keyPassword "password"
}
}
lintOptions {
abortOnError false
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
applicationId 'application.package'
signingConfig signingConfigs.release
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
productFlavors {
flavor1{
applicationId 'com.flavor1.package'
}
flavor2{
applicationId 'com.flavor2.package'
}
flavor3{
applicationId 'com.flavor3.package'
}
flavor4{
applicationId 'com.flavor4.package'
}
flavor5{
applicationId 'com.flavor5.package'
}
}
}
dependencies {
compile project(':SDK')
}
我不得不对文件进行一些更改,但基本上就是这样。
问题:我需要在 assets 文件夹中为每种风格提供一组不同的资产文件,这些文件将创建不同的 apk 文件,但具有相同的包名称。这些 apk 文件将作为同一应用程序上传到 Google Play,但针对不同的地区。
所以包名必须保持不变。所以基本上我需要创建一种机制,当它们中的每两个具有相同的包名称但不同的资产文件夹时,而不是 5 种风味将创建 10 种风味。这如何使用 gradle 来完成?
我已经尝试使用 BuildTypes 来实现这一点,如下所示:
buildTypes {
release {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assets']
}
releaseAlt {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assetsalt']
}
}
但由于某种原因,releaseAlt 也会获取位于 assets 目录而不是 assetsalt 目录中的文件。
【问题讨论】:
标签: java android gradle android-gradle-plugin build.gradle