diff options
author | Xavier Ducrohet <xav@android.com> | 2012-12-11 14:49:10 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2012-12-11 18:08:13 -0800 |
commit | 997a04c1559fcec9e199287070ec5cbfd2cca155 (patch) | |
tree | 59c2c9c27632f88bcc1606884dfdbc446bf602af /builder | |
parent | d276f419848b7e1376dadc13c2984081f2b4c804 (diff) | |
download | build-997a04c1559fcec9e199287070ec5cbfd2cca155.tar.gz |
Add support for multiple res folders in all source sets.
Change-Id: I01fc363072b4407f70863899c80620fb22044b1f
Diffstat (limited to 'builder')
3 files changed, 39 insertions, 31 deletions
diff --git a/builder/src/main/java/com/android/builder/SourceProvider.java b/builder/src/main/java/com/android/builder/SourceProvider.java index ba7368c..360f3c2 100644 --- a/builder/src/main/java/com/android/builder/SourceProvider.java +++ b/builder/src/main/java/com/android/builder/SourceProvider.java @@ -15,7 +15,10 @@ */ package com.android.builder; +import com.android.annotations.NonNull; + import java.io.File; +import java.util.Set; /** * Represent an Android SourceProvider for a given configuration. @@ -23,10 +26,14 @@ import java.io.File; public interface SourceProvider { File getManifestFile(); - File getAidlDir(); - File getRenderscriptDir(); - File getJniDir(); + Set<File> getAidlDirectories(); + + Set<File> getRenderscriptDirectories(); + + Set<File> getJniDirectories(); + + @NonNull + Set<File> getResourcesDirectories(); - File getResourcesDir(); - File getAssetsDir(); + Set<File> getAssetsDirectories(); } diff --git a/builder/src/main/java/com/android/builder/VariantConfiguration.java b/builder/src/main/java/com/android/builder/VariantConfiguration.java index d7bcf86..7f3cbe7 100644 --- a/builder/src/main/java/com/android/builder/VariantConfiguration.java +++ b/builder/src/main/java/com/android/builder/VariantConfiguration.java @@ -500,27 +500,26 @@ public class VariantConfiguration { } } - // TODO: fix when flavors and types have more than one folder. - File mainResLocation = mDefaultSourceProvider.getResourcesDir(); - if (mainResLocation != null) { - inputs.add(Collections.singletonList(mainResLocation)); - } + Set<File> mainResDirs = mDefaultSourceProvider.getResourcesDirectories(); + List<File> mainSet = Lists.newArrayList(); + mainSet.addAll(mainResDirs); + inputs.add(mainSet); // the list of flavor must be reversed to use the right overlay order. for (int n = mFlavorSourceProviders.size() - 1; n >= 0 ; n--) { SourceProvider sourceProvider = mFlavorSourceProviders.get(n); - File flavorResLocation = sourceProvider.getResourcesDir(); - if (flavorResLocation != null) { - inputs.add(Collections.singletonList(flavorResLocation)); - } + Set<File> flavorResDirs = sourceProvider.getResourcesDirectories(); + List<File> flavorSet = Lists.newArrayList(); + flavorSet.addAll(flavorResDirs); + inputs.add(flavorSet); } if (mBuildTypeSourceProvider != null) { - File typeResLocation = mBuildTypeSourceProvider.getResourcesDir(); - if (typeResLocation != null) { - inputs.add(Collections.singletonList(typeResLocation)); - } + Set<File> typeResDirs = mBuildTypeSourceProvider.getResourcesDirectories(); + List<File> typeSet = Lists.newArrayList(); + typeSet.addAll(typeResDirs); + inputs.add(typeSet); } return inputs; @@ -528,14 +527,14 @@ public class VariantConfiguration { public List<File> getAidlSourceList() { List<File> sourceList = Lists.newArrayList(); - sourceList.add(mDefaultSourceProvider.getAidlDir()); + sourceList.addAll(mDefaultSourceProvider.getAidlDirectories()); if (mType != Type.TEST) { - sourceList.add(mBuildTypeSourceProvider.getAidlDir()); + sourceList.addAll(mBuildTypeSourceProvider.getAidlDirectories()); } if (hasFlavors()) { for (SourceProvider flavorSourceSet : mFlavorSourceProviders) { - sourceList.add(flavorSourceSet.getAidlDir()); + sourceList.addAll(flavorSourceSet.getAidlDirectories()); } } diff --git a/builder/src/test/java/com/android/builder/MockSourceProvider.java b/builder/src/test/java/com/android/builder/MockSourceProvider.java index 1fb4fe1..d02ecd7 100644 --- a/builder/src/test/java/com/android/builder/MockSourceProvider.java +++ b/builder/src/test/java/com/android/builder/MockSourceProvider.java @@ -17,6 +17,8 @@ package com.android.builder; import java.io.File; +import java.util.Collections; +import java.util.Set; /** * Implementation of SourceProvider for testing that provides the default convention paths. @@ -30,13 +32,13 @@ class MockSourceProvider implements SourceProvider { private final String mRoot; @Override - public File getResourcesDir() { - return new File(mRoot, "res"); + public Set<File> getResourcesDirectories() { + return Collections.singleton(new File(mRoot, "res")); } @Override - public File getAssetsDir() { - return new File(mRoot, "assets"); + public Set<File> getAssetsDirectories() { + return Collections.singleton(new File(mRoot, "assets")); } @Override @@ -45,17 +47,17 @@ class MockSourceProvider implements SourceProvider { } @Override - public File getAidlDir() { - return new File(mRoot, "aidl"); + public Set<File> getAidlDirectories() { + return Collections.singleton(new File(mRoot, "aidl")); } @Override - public File getRenderscriptDir() { - return new File(mRoot, "rs"); + public Set<File> getRenderscriptDirectories() { + return Collections.singleton(new File(mRoot, "rs")); } @Override - public File getJniDir() { - return new File(mRoot, "jni"); + public Set<File> getJniDirectories() { + return Collections.singleton(new File(mRoot, "jni")); } } |