new ResourceSet( MergeManifests.getArtifactName(artifact), null, null, validateEnabled); resourceSet.setFromDependency(true); resourceSet.addSource(artifact.getFile()); assert mainResourceSet.getConfigName().equals(BuilderConstants.MAIN); mainResourceSet.addSources(generatedResFolders);
/** * Discover all sub-folders of all the {@link ResourceSet#getSourceFiles()} which names are * starting with one of the provided prefixes. * @param resourceSets the list of sources {@link ResourceSet} * @param prefixes the list of prefixes to look for folders. * @return a possibly empty list of folders. */ @NonNull private static List<String> getAllFilters(List<ResourceSet> resourceSets, String... prefixes) { List<String> providedResFolders = new ArrayList<String>(); for (ResourceSet resourceSet : resourceSets) { for (File resFolder : resourceSet.getSourceFiles()) { File[] subResFolders = resFolder.listFiles(); if (subResFolders != null) { for (File subResFolder : subResFolders) { for (String prefix : prefixes) { if (subResFolder.getName().startsWith(prefix)) { providedResFolders .add(subResFolder.getName().substring(prefix.length())); } } } } } } return providedResFolders; }
@NonNull private List<ResourceSet> getConfiguredResourceSets(ResourcePreprocessor preprocessor) { List<ResourceSet> resourceSets = Lists.newArrayList(getInputResourceSets()); List<ResourceSet> generatedSets = Lists.newArrayListWithCapacity(resourceSets.size()); for (ResourceSet resourceSet : resourceSets) { resourceSet.setPreprocessor(preprocessor); ResourceSet generatedSet = new GeneratedResourceSet(resourceSet); resourceSet.setGeneratedSet(generatedSet); generatedSets.add(generatedSet); } // Put all generated sets at the start of the list. resourceSets.addAll(0, generatedSets); return resourceSets; }
File resFolder = dependency.getResFolder(); if (resFolder.isDirectory()) { ResourceSet resourceSet = new ResourceSet(dependency.getFolder().getName()); resourceSet.addSource(resFolder); resourceSets.add(resourceSet); ResourceSet resourceSet = new ResourceSet(BuilderConstants.MAIN); resourceSet.addSources(mainResDirs); if (!generatedResFolders.isEmpty()) { for (File generatedResFolder : generatedResFolders) { resourceSet.addSource(generatedResFolder); resourceSet = new ResourceSet(sourceProvider.getName()); resourceSet.addSources(flavorResDirs); resourceSets.add(resourceSet); resourceSet = new ResourceSet(getFlavorName()); resourceSet.addSources(variantResDirs); resourceSets.add(resourceSet); resourceSet = new ResourceSet(mBuildType.getName()); resourceSet.addSources(typeResDirs); resourceSets.add(resourceSet); resourceSet = new ResourceSet(getFullName()); resourceSet.addSources(variantResDirs); resourceSets.add(resourceSet);
assertTrue("Found " + size + " test resources folders", size <= 1); if (size == 1) { resourceSet.addSource(project.getResourceFolders().get(0)); resourceSet.loadFromFiles(logger); merger.addDataSet(resourceSet); merger.mergeData(repository.createMergeConsumer(), true);
ResourceSet mainResourceSet = new ResourceSet(BuilderConstants.MAIN, null, null, validateEnabled); mainResourceSet.addSource(project.file(androidExtension.getResDirectory())); return Collections.singletonList(mainResourceSet); };
resourceSet.setPreprocessor(preprocessor); return; } else if (fileValidity.getStatus() == FileValidity.FileStatus.VALID_FILE) { if (!fileValidity.getDataSet().updateWith( fileValidity.getSourceFile(), changedFile, entry.getValue(), getILogger())) {
resourceSet.loadFromFiles(getILogger()); merger.addDataSet(resourceSet);
@Override protected void doFullTaskAction() { // this is full run, clean the previous output File destinationDir = getOutputDir(); emptyFolder(destinationDir); List<ResourceSet> resourceSets = getInputResourceSets(); // create a new merger and populate it with the sets. ResourceMerger merger = new ResourceMerger(); try { for (ResourceSet resourceSet : resourceSets) { resourceSet.setNormalizeResources(normalizeResources); // set needs to be loaded. resourceSet.loadFromFiles(getILogger()); merger.addDataSet(resourceSet); } // get the merged set and write it down. MergedResourceWriter writer = new MergedResourceWriter( destinationDir, getCruncher(), getCrunchPng(), getProcess9Patch(), getPublicFile()); writer.setInsertSourceMarkers(getInsertSourceMarkers()); merger.mergeData(writer, false /*doCleanUp*/); // No exception? Write the known state. merger.writeBlobTo(getIncrementalFolder(), writer); } catch (MergingException e) { System.out.println(e.getMessage()); merger.cleanBlob(getIncrementalFolder()); throw new ResourceException(e.getMessage(), e); } }
resourceSet.setNormalizeResources(normalizeResources); return; } else if (fileValidity.getStatus() == FileValidity.FileStatus.VALID_FILE) { if (!fileValidity.getDataSet().updateWith( fileValidity.getSourceFile(), changedFile, entry.getValue(), getILogger())) {
assertTrue("Found " + size + " test resources folders", size <= 1); if (size == 1) { resourceSet.addSource(project.getResourceFolders().get(0)); resourceSet.loadFromFiles(logger); merger.addDataSet(resourceSet); merger.mergeData(repository.createMergeConsumer(), true);
resourceSet.setPreprocessor(preprocessor); return; } else if (fileValidity.getStatus() == FileValidity.FileStatus.VALID_FILE) { if (!fileValidity.getDataSet().updateWith( fileValidity.getSourceFile(), changedFile, entry.getValue(), getILogger())) {
resourceSet.loadFromFiles(getILogger()); merger.addDataSet(resourceSet);
File resFolder = dependency.getResFolder(); if (resFolder.isDirectory()) { ResourceSet resourceSet = new ResourceSet(dependency.getExtractedFolder().getName(), dependency.getName(), validateEnabled); resourceSet.addSource(resFolder); resourceSet.setFromDependency(true); resourceSets.add(resourceSet); ResourceSet resourceSet = new ResourceSet(BuilderConstants.MAIN, validateEnabled); resourceSet.addSources(mainResDirs); if (!generatedResFolders.isEmpty()) { for (File generatedResFolder : generatedResFolders) { resourceSet.addSource(generatedResFolder); resourceSet = new ResourceSet(sourceProvider.getName(), validateEnabled); resourceSet.addSources(flavorResDirs); resourceSets.add(resourceSet); resourceSet = new ResourceSet(getFlavorName(), validateEnabled); resourceSet.addSources(variantResDirs); resourceSets.add(resourceSet); resourceSet = new ResourceSet(mBuildType.getName(), validateEnabled); resourceSet.addSources(typeResDirs); resourceSets.add(resourceSet); resourceSet = new ResourceSet(getFullName(), validateEnabled); resourceSet.addSources(variantResDirs); resourceSets.add(resourceSet);
private List<ResourceSet> getConfiguredResourceSets(ResourcePreprocessor preprocessor) { // it is possible that this get called twice in case the incremental run fails and reverts // back to full task run. Because the cached ResourceList is modified we don't want // to recompute this twice (plus, why recompute it twice anyway?) if (processedInputs == null) { processedInputs = computeResourceSetList(); List<ResourceSet> generatedSets = Lists.newArrayListWithCapacity(processedInputs.size()); for (ResourceSet resourceSet : processedInputs) { resourceSet.setPreprocessor(preprocessor); ResourceSet generatedSet = new GeneratedResourceSet(resourceSet); resourceSet.setGeneratedSet(generatedSet); generatedSets.add(generatedSet); } // We want to keep the order of the inputs. Given inputs: // (A, B, C, D) // We want to get: // (A-generated, A, B-generated, B, C-generated, C, D-generated, D). // Therefore, when later in {@link DataMerger} we look for sources going through the // list backwards, B-generated will take priority over A (but not B). // A real life use-case would be if an app module generated resource overrode a library // module generated resource (existing not in generated but bundled dir at this stage): // (lib, app debug, app main) // We will get: // (lib generated, lib, app debug generated, app debug, app main generated, app main) for (int i = 0; i < generatedSets.size(); ++i) { processedInputs.add(2 * i, generatedSets.get(i)); } } return processedInputs; }
/** * Discover all sub-folders of all the {@link ResourceSet#getSourceFiles()} which names are * starting with one of the provided prefixes. * @param resourceSets the list of sources {@link ResourceSet} * @param prefixes the list of prefixes to look for folders. * @return a possibly empty list of folders. */ @NonNull private static List<String> getAllFilters(List<ResourceSet> resourceSets, String... prefixes) { List<String> providedResFolders = new ArrayList<String>(); for (ResourceSet resourceSet : resourceSets) { for (File resFolder : resourceSet.getSourceFiles()) { File[] subResFolders = resFolder.listFiles(); if (subResFolders != null) { for (File subResFolder : subResFolders) { for (String prefix : prefixes) { if (subResFolder.getName().startsWith(prefix)) { providedResFolders .add(subResFolder.getName().substring(prefix.length())); } } } } } } return providedResFolders; }