aboutsummaryrefslogtreecommitdiff
path: root/builder
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-12-11 14:49:10 -0800
committerXavier Ducrohet <xav@android.com>2012-12-11 18:08:13 -0800
commit997a04c1559fcec9e199287070ec5cbfd2cca155 (patch)
tree59c2c9c27632f88bcc1606884dfdbc446bf602af /builder
parentd276f419848b7e1376dadc13c2984081f2b4c804 (diff)
downloadbuild-997a04c1559fcec9e199287070ec5cbfd2cca155.tar.gz
Add support for multiple res folders in all source sets.
Change-Id: I01fc363072b4407f70863899c80620fb22044b1f
Diffstat (limited to 'builder')
-rw-r--r--builder/src/main/java/com/android/builder/SourceProvider.java17
-rw-r--r--builder/src/main/java/com/android/builder/VariantConfiguration.java31
-rw-r--r--builder/src/test/java/com/android/builder/MockSourceProvider.java22
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"));
}
}