aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@google.com>2013-12-03 14:25:53 -0800
committerXavier Ducrohet <xav@google.com>2013-12-03 14:55:26 -0800
commit16c22b991956b6ad6ac4634b2b9aa88bea8eb335 (patch)
treed03a2a29c7fe1e8cf53e0d3147e93cbfa950f72b
parent332436805ed039ef7bf5f9d9e9052efbe5c356d8 (diff)
downloadbuild-16c22b991956b6ad6ac4634b2b9aa88bea8eb335.tar.gz
Change the BuildConfig.FLAVOR_# value to include the group name.
Change-Id: I6232e532af66a3bd33318a45ed078041f973ca9a
-rw-r--r--builder/src/main/java/com/android/builder/VariantConfiguration.java29
-rw-r--r--builder/src/test/java/com/android/builder/VariantConfigurationTest.java6
-rw-r--r--changelog.txt2
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy15
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy4
-rw-r--r--gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy11
-rw-r--r--tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java4
7 files changed, 51 insertions, 20 deletions
diff --git a/builder/src/main/java/com/android/builder/VariantConfiguration.java b/builder/src/main/java/com/android/builder/VariantConfiguration.java
index f55d0d6..1491405 100644
--- a/builder/src/main/java/com/android/builder/VariantConfiguration.java
+++ b/builder/src/main/java/com/android/builder/VariantConfiguration.java
@@ -84,6 +84,7 @@ public class VariantConfiguration implements TestData {
@Nullable
private final SourceProvider mBuildTypeSourceProvider;
+ private final List<String> mFlavorDimensionNames = Lists.newArrayList();
private final List<DefaultProductFlavor> mFlavorConfigs = Lists.newArrayList();
private final List<SourceProvider> mFlavorSourceProviders = Lists.newArrayList();
@@ -330,17 +331,29 @@ public class VariantConfiguration implements TestData {
/**
* Return the names of the applied flavors.
*
+ * The list contains the dimension names as well.
+ *
* @return the list, possibly empty if there are no flavors.
*/
@NonNull
- public List<String> getFlavorNames() {
+ public List<String> getFlavorNamesWithDimensionNames() {
if (mFlavorConfigs.isEmpty()) {
return Collections.emptyList();
}
- List<String> names = Lists.newArrayListWithCapacity(mFlavorConfigs.size());
- for (DefaultProductFlavor flavor : mFlavorConfigs) {
- names.add(flavor.getName());
+ List<String> names;
+ int count = mFlavorConfigs.size();
+
+ if (count > 1) {
+ names = Lists.newArrayListWithCapacity(count * 2);
+
+ for (int i = 0 ; i < count ; i++) {
+ names.add(mFlavorConfigs.get(i).getName());
+ names.add(mFlavorDimensionNames.get(i));
+ }
+
+ } else {
+ names = Collections.singletonList(mFlavorConfigs.get(0).getName());
}
return names;
@@ -356,15 +369,19 @@ public class VariantConfiguration implements TestData {
*
* @param productFlavor the configured product flavor
* @param sourceProvider the source provider for the product flavor
+ * @param dimensionName the name of the dimension associated with the flavor
*
* @return the config object
*/
@NonNull
- public VariantConfiguration addProductFlavor(@NonNull DefaultProductFlavor productFlavor,
- @NonNull SourceProvider sourceProvider) {
+ public VariantConfiguration addProductFlavor(
+ @NonNull DefaultProductFlavor productFlavor,
+ @NonNull SourceProvider sourceProvider,
+ @NonNull String dimensionName) {
mFlavorConfigs.add(productFlavor);
mFlavorSourceProviders.add(sourceProvider);
+ mFlavorDimensionNames.add(dimensionName);
mMergedFlavor = productFlavor.mergeOver(mMergedFlavor);
computeNdkConfig();
diff --git a/builder/src/test/java/com/android/builder/VariantConfigurationTest.java b/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
index dfe8ea4..e1ffc3d 100644
--- a/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
+++ b/builder/src/test/java/com/android/builder/VariantConfigurationTest.java
@@ -141,7 +141,7 @@ public class VariantConfigurationTest extends TestCase {
}
};
- variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
+ variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"), "");
return variant;
}
@@ -162,7 +162,7 @@ public class VariantConfigurationTest extends TestCase {
}
};
- variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
+ variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"), "");
return variant;
}
@@ -182,7 +182,7 @@ public class VariantConfigurationTest extends TestCase {
}
};
- variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"));
+ variant.addProductFlavor(mFlavorConfig, new MockSourceProvider("custom"), "");
return variant;
}
}
diff --git a/changelog.txt b/changelog.txt
index 3915ffe..77dfdba 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -16,7 +16,7 @@
buildConfigField "<type>", "<name>", "<value>"
This allows override a field (see 'basic' sample)
Also, BuildConfig now automatically contains constants for
- PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, FLAVOR as well as FLAVOR1, FLAVOR2, etc... if there are several flavor dimensions.
+ PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, FLAVOR as well as FLAVOR_<group>, FLAVOR_<group>, etc... if there are several flavor dimensions.
- Switch to ProGuard 4.10
- Added ability to test proguarded (obfuscated) apps.
- Jar files are now pre-dexed for faster dexing.
diff --git a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
index 0cc4e35..32a13ad 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/AppPlugin.groovy
@@ -438,9 +438,15 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements Plugin<Pr
buildTypeData.sourceSet)
for (ProductFlavorData data : flavorDataList) {
+ String dimensionName = "";
+ if (data.productFlavor instanceof GroupableProductFlavorDsl) {
+ dimensionName = ((GroupableProductFlavorDsl) data.productFlavor).flavorGroup
+ }
variantConfig.addProductFlavor(
data.productFlavor,
- data.sourceSet)
+ data.sourceSet,
+ dimensionName
+ )
variantProviders.add(data.mainProvider)
}
@@ -491,9 +497,14 @@ class AppPlugin extends com.android.build.gradle.BasePlugin implements Plugin<Pr
List<ConfigurationProvider> testVariantProviders = []
for (ProductFlavorData data : flavorDataList) {
+ String dimensionName = "";
+ if (data.productFlavor instanceof GroupableProductFlavorDsl) {
+ dimensionName = ((GroupableProductFlavorDsl) data.productFlavor).flavorGroup
+ }
testVariantConfig.addProductFlavor(
data.productFlavor,
- data.testSourceSet)
+ data.testSourceSet,
+ dimensionName)
testVariantProviders.add(data.testProvider)
}
diff --git a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
index 18d43c9..ddd7b4a 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy
@@ -587,8 +587,8 @@ public abstract class BasePlugin {
variantConfiguration.flavorName
}
- generateBuildConfigTask.conventionMapping.flavorNames = {
- variantConfiguration.flavorNames
+ generateBuildConfigTask.conventionMapping.flavorNamesWithDimensionNames = {
+ variantConfiguration.flavorNamesWithDimensionNames
}
generateBuildConfigTask.conventionMapping.items = {
diff --git a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy b/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
index cba93f0..1f4d7af 100644
--- a/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
+++ b/gradle/src/main/groovy/com/android/build/gradle/tasks/GenerateBuildConfig.groovy
@@ -43,7 +43,7 @@ public class GenerateBuildConfig extends IncrementalTask {
String flavorName
@Input
- List<String> flavorNames
+ List<String> flavorNamesWithDimensionNames
@Input
String buildTypeName
@@ -86,9 +86,12 @@ public class GenerateBuildConfig extends IncrementalTask {
generator.addField("String", "VERSION_NAME", "\"${getVersionName()}\"")
}
- int i = 1;
- for (String name : getFlavorNames()) {
- generator.addField("String", "FLAVOR${i++}", "\"$name\"")
+ List<String> flavors = getFlavorNamesWithDimensionNames();
+ int count = flavors.size();
+ if (count > 1) {
+ for (int i = 0; i < count ; i+=2) {
+ generator.addField("String", "FLAVOR_${flavors.get(i+1)}", "\"${flavors.get(i)}\"")
+ }
}
generator.generate();
diff --git a/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java b/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java
index d768e1e..ff2b47c 100644
--- a/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java
+++ b/tests/flavors/src/main/java/com/android/tests/flavors/MainActivity.java
@@ -14,10 +14,10 @@ public class MainActivity extends Activity {
TextView tv;
tv = (TextView) findViewById(R.id.buildconfig1);
- tv.setText(BuildConfig.FLAVOR1);
+ tv.setText(BuildConfig.FLAVOR_group1);
tv = (TextView) findViewById(R.id.buildconfig2);
- tv.setText(BuildConfig.FLAVOR2);
+ tv.setText(BuildConfig.FLAVOR_group2);
tv = (TextView) findViewById(R.id.codeoverlay1);
tv.setText(com.android.tests.flavors.group1.SomeClass.getString());