diff options
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 @@ -27,6 +27,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. */ @NonNull 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() { @@ -73,6 +79,12 @@ public abstract class LibraryBundle implements LibraryDependency { @Override @NonNull + public File getBundle() { + return mBundle; + } + + @Override + @NonNull public File getFolder() { return mBundleFolder; } 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<Project> { // 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<LibraryDependency> dependencies; - @NonNull - private final File bundle; - public LibraryDependencyImpl(@NonNull File explodedBundle, + public LibraryDependencyImpl(@NonNull File bundle, + @NonNull File explodedBundle, @NonNull List<LibraryDependency> 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 @@ -28,6 +28,8 @@ public class AndroidLibraryImpl implements AndroidLibrary, Serializable { private static final long serialVersionUID = 1L; @NonNull + private final File bundle; + @NonNull private final File folder; @NonNull private final File jarFile; @@ -53,6 +55,7 @@ public class AndroidLibraryImpl implements AndroidLibrary, Serializable { AndroidLibraryImpl(@NonNull LibraryDependency libraryDependency, @NonNull List<AndroidLibraryImpl> 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() { |