diff options
author | Xavier Ducrohet <xav@google.com> | 2013-12-03 14:25:53 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@google.com> | 2013-12-03 14:55:26 -0800 |
commit | 16c22b991956b6ad6ac4634b2b9aa88bea8eb335 (patch) | |
tree | d03a2a29c7fe1e8cf53e0d3147e93cbfa950f72b | |
parent | 332436805ed039ef7bf5f9d9e9052efbe5c356d8 (diff) | |
download | build-16c22b991956b6ad6ac4634b2b9aa88bea8eb335.tar.gz |
Change the BuildConfig.FLAVOR_# value to include the group name.
Change-Id: I6232e532af66a3bd33318a45ed078041f973ca9a
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()); |