@Override public List<File> call() { return variantOutputData.packageSplitResourcesTask.getOutputFiles(); } });
@OutputFiles public List<File> getOutputFiles() { ImmutableList.Builder<File> builder = ImmutableList.builder(); for (ApkOutputFile apk : getOutputSplitFiles()) { builder.add(apk.getOutputFile()); } return builder.build(); }
@Override public void execute(@NonNull PackageSplitRes packageSplitResourcesTask) { BaseVariantData<? extends BaseVariantOutputData> variantData = scope.getVariantData(); final VariantConfiguration config = variantData.getVariantConfiguration(); Set<String> densityFilters = variantData.getFilters(OutputFile.FilterType.DENSITY); Set<String> languageFilters = variantData.getFilters(OutputFile.FilterType.LANGUAGE); final BaseVariantOutputData variantOutputData = variantData.getMainOutput(); variantOutputData.packageSplitResourcesTask = packageSplitResourcesTask; VariantOutputScope variantOutputScope = variantOutputData.getScope(); packageSplitResourcesTask.setInputDirectory( variantOutputScope.getProcessResourcePackageOutputFile().getParentFile()); packageSplitResourcesTask.setDensitySplits(densityFilters); packageSplitResourcesTask.setLanguageSplits(languageFilters); packageSplitResourcesTask.setOutputBaseName(config.getBaseName()); packageSplitResourcesTask.setSigningConfig(config.getSigningConfig()); packageSplitResourcesTask.setOutputDirectory(scope.getSplitOutputDirectory()); packageSplitResourcesTask.setAndroidBuilder(scope.getGlobalScope().getAndroidBuilder()); packageSplitResourcesTask.setVariantName(config.getFullName()); packageSplitResourcesTask.dependsOn( variantOutputScope.getProcessResourcesTask().getName()); } }
/** * Returns the list of {@link Supplier} for this variant. Some variant can produce more * than one file when dealing with pure splits. * @return the complete list of tasks producing an APK for this variant. */ public List<FileSupplier> getSplitOutputFileSuppliers() { ImmutableList.Builder<FileSupplier> tasks = ImmutableList.builder(); if (splitZipAlign != null || packageSplitResourcesTask != null) { tasks.addAll(splitZipAlign == null ? packageSplitResourcesTask.getOutputFileSuppliers() : splitZipAlign.getOutputFileSuppliers()); } // ABI splits zip are aligned together with the other densities in the splitZipAlign task // so only add the ABI splits from the package task if there was no splitZipAlign task. if (packageSplitAbiTask != null && splitZipAlign == null) { tasks.addAll(packageSplitAbiTask.getOutputFileSuppliers()); } return tasks.build(); }
variantOutputScope.getTaskName("copySplit"), Copy.class); copyTask.setDestinationDir(apkLocation); copyTask.from(variantOutputData.packageSplitResourcesTask.getOutputDirectory()); variantOutputData.assembleTask.dependsOn(copyTask); copyTask.mustRunAfter(appTask.getName());
scope.getTaskName("package", "SplitResources"), PackageSplitRes.class); variantOutputData.packageSplitResourcesTask.setInputDirectory( variantOutputScope.getProcessResourcePackageOutputFile().getParentFile()); variantOutputData.packageSplitResourcesTask.setDensitySplits(densityFilters); variantOutputData.packageSplitResourcesTask.setLanguageSplits(languageFilters); variantOutputData.packageSplitResourcesTask.setOutputBaseName(config.getBaseName()); variantOutputData.packageSplitResourcesTask.setSigningConfig(config.getSigningConfig()); variantOutputData.packageSplitResourcesTask.setOutputDirectory(new File( scope.getGlobalScope().getIntermediatesDir(), "splits/" + config.getDirName())); variantOutputData.packageSplitResourcesTask.setAndroidBuilder(androidBuilder); variantOutputData.packageSplitResourcesTask.dependsOn( variantOutputScope.getProcessResourcesTask().getName());
/** * Returns the list of {@link Supplier} for this variant. Some variant can produce more * than one file when dealing with pure splits. * @return the complete list of tasks producing an APK for this variant. */ public List<FileSupplier> getSplitOutputFileSuppliers() { ImmutableList.Builder<FileSupplier> tasks = ImmutableList.builder(); if (splitZipAlign != null || packageSplitResourcesTask != null) { tasks.addAll(splitZipAlign == null ? packageSplitResourcesTask.getOutputFileSuppliers() : splitZipAlign.getOutputFileSuppliers()); } // ABI splits zip are aligned together with the other densities in the splitZipAlign task // so only add the ABI splits from the package task if there was no splitZipAlign task. if (packageSplitAbiTask != null && splitZipAlign == null) { tasks.addAll(packageSplitAbiTask.getOutputFileSuppliers()); } return tasks.build(); }
variantOutputData .packageSplitResourcesTask .getOutputDirectory()); copyTask.mustRunAfter(appTaskName); });
@NonNull @Override public ImmutableList<ApkOutputFile> getOutputs() { ImmutableList.Builder<ApkOutputFile> outputs = ImmutableList.builder(); outputs.add(getMainOutputFile()); if (splitZipAlign != null) { outputs.addAll(splitZipAlign.getOutputSplitFiles()); } else { if (packageSplitResourcesTask != null) { outputs.addAll(packageSplitResourcesTask.getOutputSplitFiles()); } } return outputs.build(); }
@Override public List<File> call() { return variantOutputData.packageSplitResourcesTask.getOutputFiles(); } });
@NonNull @Override public ImmutableList<ApkOutputFile> getOutputs() { ImmutableList.Builder<ApkOutputFile> outputs = ImmutableList.builder(); outputs.add(getMainOutputFile()); if (splitZipAlign != null) { outputs.addAll(splitZipAlign.getOutputSplitFiles()); } else { if (packageSplitResourcesTask != null) { outputs.addAll(packageSplitResourcesTask.getOutputSplitFiles()); } } return outputs.build(); }