public void createSplitTasks(@NonNull TaskFactory tasks, @NonNull VariantScope variantScope) {
VariantOutputScope outputScope = variantScope.getVariantData().getMainOutput().getScope();
PackagingScope packagingScope = new DefaultGradlePackagingScope(outputScope);
AndroidTask<PackageSplitRes> packageSplitResourcesTask =
createSplitResourcesTasks(tasks, variantScope, packagingScope);
final AndroidTask<PackageSplitAbi> packageSplitAbiTask =
createSplitAbiTasks(tasks, variantScope, packagingScope);
AndroidTask<SplitZipAlign> zipAlign =
androidTasks.create(tasks, new SplitZipAlign.ConfigAction(variantScope));
if (packageSplitAbiTask != null) {
zipAlign.configure(
tasks,
task ->
task.getAbiInputFiles()
.addAll(variantScope.getPackageSplitAbiOutputFiles()));
}
zipAlign.dependsOn(tasks, packageSplitResourcesTask);
zipAlign.optionalDependsOn(tasks, packageSplitAbiTask);
outputScope.setSplitZipAlignTask(zipAlign);
}