From 4fae04bf8b99ace66b8970f6fa344e884e9ae4fe Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Mon, 1 Jul 2013 13:57:56 -0700 Subject: Add the original bundle to the library model. This gives access both to the aar file and the exploded folder (which may not be exploded yet when the model is queried). Change-Id: Ieeba1ab19a8746448b047c73bcd1dcb23b47ab11 --- .../com/android/builder/model/AndroidLibrary.java | 6 ++++++ .../android/builder/dependency/LibraryBundle.java | 22 +++++++++++++++++----- .../build/gradle/model/AndroidProjectTest.java | 6 ++++++ .../com/android/build/gradle/BasePlugin.groovy | 2 +- .../com/android/build/gradle/LibraryPlugin.groovy | 1 + .../internal/dependency/LibraryDependencyImpl.java | 14 +++----------- .../gradle/internal/model/AndroidLibraryImpl.java | 10 ++++++++++ 7 files changed, 44 insertions(+), 17 deletions(-) diff --git a/builder-model/src/main/java/com/android/builder/model/AndroidLibrary.java b/builder-model/src/main/java/com/android/builder/model/AndroidLibrary.java index df19b16..dfd8d33 100644 --- a/builder-model/src/main/java/com/android/builder/model/AndroidLibrary.java +++ b/builder-model/src/main/java/com/android/builder/model/AndroidLibrary.java @@ -26,6 +26,12 @@ import java.util.List; */ public interface AndroidLibrary { + /** + * Returns the location of the library aar bundle. + */ + @NonNull + File getBundle(); + /** * Returns the location of the unzipped archive. */ diff --git a/builder/src/main/java/com/android/builder/dependency/LibraryBundle.java b/builder/src/main/java/com/android/builder/dependency/LibraryBundle.java index aff858b..a6083ff 100644 --- a/builder/src/main/java/com/android/builder/dependency/LibraryBundle.java +++ b/builder/src/main/java/com/android/builder/dependency/LibraryBundle.java @@ -34,20 +34,26 @@ public abstract class LibraryBundle implements LibraryDependency { public static final String FN_PROGUARD_TXT = "proguard.txt"; private final String mName; + private final File mBundle; private final File mBundleFolder; /** * Creates the bundle dependency with an optional name - * @param bundleFolder the folder containing the library + * + * @param bundle the library's aar bundle file + * @param bundleFolder the folder containing the unarchived library content * @param name an optional name */ - protected LibraryBundle(@NonNull File bundleFolder, @Nullable String name) { - mName = name; + protected LibraryBundle(@NonNull File bundle, + @NonNull File bundleFolder, + @Nullable String name) { + mBundle = bundle; mBundleFolder = bundleFolder; + mName = name; } - protected LibraryBundle(@NonNull File bundleFolder) { - this(bundleFolder, null); + protected LibraryBundle(@NonNull File bundle, @NonNull File bundleFolder) { + this(bundle, bundleFolder, null); } public String getName() { @@ -71,6 +77,12 @@ public abstract class LibraryBundle implements LibraryDependency { return new File(mBundleFolder, "R.txt"); } + @Override + @NonNull + public File getBundle() { + return mBundle; + } + @Override @NonNull public File getFolder() { diff --git a/gradle-model/src/test/java/com/android/build/gradle/model/AndroidProjectTest.java b/gradle-model/src/test/java/com/android/build/gradle/model/AndroidProjectTest.java index 0d0c779..b747d0e 100644 --- a/gradle-model/src/test/java/com/android/build/gradle/model/AndroidProjectTest.java +++ b/gradle-model/src/test/java/com/android/build/gradle/model/AndroidProjectTest.java @@ -165,6 +165,12 @@ public class AndroidProjectTest extends TestCase { assertNotNull(dependencies); assertEquals(2, dependencies.getJars().size()); assertEquals(1, dependencies.getLibraries().size()); + + AndroidLibrary lib = dependencies.getLibraries().get(0); + assertNotNull(lib); + assertNotNull(lib.getBundle()); + assertNotNull(lib.getFolder()); + assertTrue(dependencies.getProjectDependenciesPath().isEmpty()); } 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 584e510..40e46f2 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy +++ b/gradle/src/main/groovy/com/android/build/gradle/BasePlugin.groovy @@ -1335,7 +1335,7 @@ public abstract class BasePlugin { def explodedDir = project.file( "$project.buildDir/exploded-bundles/${bundleName}.aar") LibraryDependencyImpl adep = new LibraryDependencyImpl( - explodedDir, nestedBundles, artifact.file, + artifact.file, explodedDir, nestedBundles, id.group + ":" + id.name + ":" + id.version) bundlesForThisModule << adep reverseMap.put(adep, configDependencies) diff --git a/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy b/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy index 41f4bb8..ff6d47c 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy +++ b/gradle/src/main/groovy/com/android/build/gradle/LibraryPlugin.groovy @@ -292,6 +292,7 @@ public class LibraryPlugin extends BasePlugin implements Plugin { // configure the variant to be testable. variantConfig.output = new LibraryBundle( + bundle.archivePath, project.file("$project.buildDir/$DIR_BUNDLES/${variantData.dirName}"), variantData.getName()) { diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/dependency/LibraryDependencyImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/dependency/LibraryDependencyImpl.java index 134ceea..75d4112 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/internal/dependency/LibraryDependencyImpl.java +++ b/gradle/src/main/groovy/com/android/build/gradle/internal/dependency/LibraryDependencyImpl.java @@ -29,21 +29,13 @@ public class LibraryDependencyImpl extends LibraryBundle { @NonNull private final List dependencies; - @NonNull - private final File bundle; - public LibraryDependencyImpl(@NonNull File explodedBundle, + public LibraryDependencyImpl(@NonNull File bundle, + @NonNull File explodedBundle, @NonNull List dependencies, - @NonNull File bundle, @Nullable String name) { - super(explodedBundle, name); + super(bundle, explodedBundle, name); this.dependencies = dependencies; - this.bundle = bundle; - } - - @NonNull - public File getBundle() { - return bundle; } @NonNull diff --git a/gradle/src/main/groovy/com/android/build/gradle/internal/model/AndroidLibraryImpl.java b/gradle/src/main/groovy/com/android/build/gradle/internal/model/AndroidLibraryImpl.java index e56df5c..0e52551 100644 --- a/gradle/src/main/groovy/com/android/build/gradle/internal/model/AndroidLibraryImpl.java +++ b/gradle/src/main/groovy/com/android/build/gradle/internal/model/AndroidLibraryImpl.java @@ -27,6 +27,8 @@ import java.util.List; public class AndroidLibraryImpl implements AndroidLibrary, Serializable { private static final long serialVersionUID = 1L; + @NonNull + private final File bundle; @NonNull private final File folder; @NonNull @@ -53,6 +55,7 @@ public class AndroidLibraryImpl implements AndroidLibrary, Serializable { AndroidLibraryImpl(@NonNull LibraryDependency libraryDependency, @NonNull List dependencies) { this.dependencies = dependencies; + bundle = libraryDependency.getBundle(); folder = libraryDependency.getFolder(); jarFile = libraryDependency.getJarFile(); localJars = libraryDependency.getLocalJars(); @@ -65,6 +68,13 @@ public class AndroidLibraryImpl implements AndroidLibrary, Serializable { lintJar = libraryDependency.getLintJar(); } + + @NonNull + @Override + public File getBundle() { + return bundle; + } + @NonNull @Override public File getFolder() { -- cgit v1.2.3