AndroidLibraryImpl( @NonNull LibraryDependency libraryDependency, @NonNull List<AndroidLibrary> dependencies, @NonNull Collection<File> localJarOverride, @Nullable String project, @Nullable String variant, @Nullable MavenCoordinates requestedCoordinates, @Nullable MavenCoordinates resolvedCoordinates) { super(requestedCoordinates, resolvedCoordinates); this.dependencies = dependencies; bundle = libraryDependency.getBundle(); folder = libraryDependency.getFolder(); manifest = libraryDependency.getManifest(); jarFile = libraryDependency.getJarFile(); localJars = Lists.newArrayList(localJarOverride); resFolder = libraryDependency.getResFolder(); assetsFolder = libraryDependency.getAssetsFolder(); jniFolder = libraryDependency.getJniFolder(); aidlFolder = libraryDependency.getAidlFolder(); renderscriptFolder = libraryDependency.getRenderscriptFolder(); proguardRules = libraryDependency.getProguardRules(); lintJar = libraryDependency.getLintJar(); annotations = libraryDependency.getExternalAnnotations(); publicResources = libraryDependency.getPublicResources(); isOptional = libraryDependency.isOptional(); this.project = project; this.variant = variant; }
@NonNull private static AndroidLibrary convertAndroidLibrary( @NonNull LibraryDependency libraryDependency) { List<LibraryDependency> deps = libraryDependency.getDependencies(); List<AndroidLibrary> clonedDeps = Lists.newArrayListWithCapacity(deps.size()); for (LibraryDependency child : deps) { AndroidLibrary clonedLib = sCache.get(child); if (clonedLib != null) { clonedDeps.add(clonedLib); } } // compute local jar even if the bundle isn't exploded. Collection<File> localJarOverride = findLocalJar(libraryDependency); return new AndroidLibraryImpl( libraryDependency, clonedDeps, localJarOverride, libraryDependency.getProject(), libraryDependency.getProjectVariant(), libraryDependency.getRequestedCoordinates(), libraryDependency.getResolvedCoordinates()); }
@NonNull public static List<ManifestDependencyImpl> getManifestDependencies( List<LibraryDependency> libraries) { List<ManifestDependencyImpl> list = Lists.newArrayListWithCapacity(libraries.size()); for (LibraryDependency lib : libraries) { // get the dependencies List<ManifestDependencyImpl> children = getManifestDependencies(lib.getDependencies()); list.add(new ManifestDependencyImpl(lib.getName(), lib.getManifest(), children)); } return list; }
private void render(final LibraryDependency lib, boolean lastChild) { renderer.visit(new Action<StyledTextOutput>() { @Override public void execute(StyledTextOutput styledTextOutput) { getTextOutput().text(((LibraryBundle)lib).getName()); } }, lastChild); renderChildren(lib.getDependencies(), lib.getLocalDependencies()); }
if (!libraryDependency.isOptional()) { File libJar = libraryDependency.getJarFile(); if (libJar.exists()) { jars.add(libJar); for (File jarFile : libraryDependency.getLocalJars()) { if (jarFile.isFile()) { jars.add(jarFile);
for (int n = mFlatLibraries.size() - 1 ; n >= 0 ; n--) { LibraryDependency dependency = mFlatLibraries.get(n); if (!dependency.isOptional()) { File resFolder = dependency.getResFolder(); if (resFolder.isDirectory()) { ResourceSet resourceSet = new ResourceSet(dependency.getFolder().getName()); resourceSet.addSource(resFolder); resourceSets.add(resourceSet);
private static Collection<File> findLocalJar(LibraryDependency library) { File explodedFolder = library.getFolder(); if (explodedFolder.isDirectory()) { return library.getLocalJars(); File aarFile = library.getBundle(); if (aarFile.isFile()) { List<File> jarList = Lists.newArrayList();
/** * Returns the compile classpath for this config. If the config tests a library, this * will include the classpath of the tested config * * @return a non null, but possibly empty set. */ @NonNull public Set<File> getCompileClasspath() { Set<File> classpath = Sets.newHashSetWithExpectedSize( mExternalJars.size() + mLocalJars.size() + mFlatLibraries.size()); for (LibraryDependency lib : mFlatLibraries) { classpath.add(lib.getJarFile()); for (File jarFile : lib.getLocalJars()) { classpath.add(jarFile); } } for (JarDependency jar : mExternalJars) { if (jar.isCompiled()) { classpath.add(jar.getJarFile()); } } for (JarDependency jar : mLocalJars) { if (jar.isCompiled()) { classpath.add(jar.getJarFile()); } } return classpath; }
File assetFolder = dependency.getAssetsFolder(); if (assetFolder.isDirectory()) { AssetSet assetSet = new AssetSet(dependency.getFolder().getName()); assetSet.addSource(assetFolder); assetSets.add(assetSet);
@NonNull public List<File> getLibraryJniFolders() { List<File> list = Lists.newArrayListWithExpectedSize(mFlatLibraries.size()); for (int n = mFlatLibraries.size() - 1 ; n >= 0 ; n--) { LibraryDependency dependency = mFlatLibraries.get(n); File jniFolder = dependency.getJniFolder(); if (jniFolder.isDirectory()) { list.add(jniFolder); } } return list; }
/** * Returns all the renderscript import folder that are outside of the current project. */ @NonNull public List<File> getRenderscriptImports() { List<File> list = Lists.newArrayList(); for (LibraryDependency lib : mFlatLibraries) { File rsLib = lib.getRenderscriptFolder(); if (rsLib.isDirectory()) { list.add(rsLib); } } return list; }
/** * Returns all the aidl import folder that are outside of the current project. */ @NonNull public List<File> getAidlImports() { List<File> list = Lists.newArrayList(); for (LibraryDependency lib : mFlatLibraries) { File aidlLib = lib.getAidlFolder(); if (aidlLib.isDirectory()) { list.add(aidlLib); } } return list; }
/** * Resolves a given list of libraries, finds out if they depend on other libraries, and * returns a flat list of all the direct and indirect dependencies in the proper order (first * is higher priority when calling aapt). * @param directDependencies the libraries to resolve * @param outFlatDependencies where to store all the libraries. */ @VisibleForTesting static void resolveIndirectLibraryDependencies(List<LibraryDependency> directDependencies, List<LibraryDependency> outFlatDependencies) { if (directDependencies == null) { return; } // loop in the inverse order to resolve dependencies on the libraries, so that if a library // is required by two higher level libraries it can be inserted in the correct place for (int i = directDependencies.size() - 1 ; i >= 0 ; i--) { LibraryDependency library = directDependencies.get(i); // get its libraries Collection<LibraryDependency> dependencies = library.getDependencies(); List<LibraryDependency> depList = Lists.newArrayList(dependencies); // resolve the dependencies for those libraries resolveIndirectLibraryDependencies(depList, outFlatDependencies); // and add the current one (if needed) in front (higher priority) if (!outFlatDependencies.contains(library)) { outFlatDependencies.add(0, library); } } }
File proguardRules = libraryDependency.getProguardRules(); if (proguardRules.exists()) { fullList.add(proguardRules);
testedVariantData.getVariantConfiguration().getOutput(); if (libraryDependency != null) { File jarFile = libraryDependency.getJarFile(); classpath = classpath.minus(project.files(jarFile));
if (libraryDependency.isOptional()) { File libJar = libraryDependency.getJarFile(); if (libJar.exists()) { jars.add(libJar); for (File jarFile : libraryDependency.getLocalJars()) { if (jarFile.isFile()) { jars.add(jarFile);
@NonNull private static List<ManifestDependencyImpl> getManifestDependencies( List<LibraryDependency> libraries) { List<ManifestDependencyImpl> list = Lists.newArrayListWithCapacity(libraries.size()); for (LibraryDependency lib : libraries) { // get the dependencies List<ManifestDependencyImpl> children = getManifestDependencies(lib.getDependencies()); list.add(new ManifestDependencyImpl(lib.getName(), lib.getManifest(), children)); } return list; }