@Override public void execute(@NonNull GenerateSplitAbiRes generateSplitAbiRes) { final VariantConfiguration config = scope.getVariantConfiguration(); Set<String> filters = AbiSplitOptions.getAbiFilters( scope.getGlobalScope().getExtension().getSplits().getAbiFilters()); generateSplitAbiRes.setAndroidBuilder(scope.getGlobalScope().getAndroidBuilder()); generateSplitAbiRes.setVariantName(config.getFullName()); generateSplitAbiRes.setOutputDirectory(scope.getGenerateSplitAbiResOutputDirectory()); generateSplitAbiRes.setSplits(filters); generateSplitAbiRes.setOutputBaseName(config.getBaseName()); generateSplitAbiRes.setApplicationId(config.getApplicationId()); generateSplitAbiRes.variantOutputData = (ApkVariantOutputData) scope.getVariantData().getMainOutput(); ConventionMappingHelper.map(generateSplitAbiRes, "debuggable", new Callable<Boolean>() { @Override public Boolean call() throws Exception { return config.getBuildType().isDebuggable(); } }); ConventionMappingHelper.map(generateSplitAbiRes, "aaptOptions", new Callable<AaptOptions>() { @Override public AaptOptions call() throws Exception { return scope.getGlobalScope().getExtension().getAaptOptions(); } }); } }
for (String split : getSplits()) { String resPackageFileName = getOutputFileForSplit(split).getAbsolutePath(); File tmpDirectory = new File(getOutputDirectory(), getOutputBaseName()); tmpDirectory.mkdirs(); String versionNameToUse = getVersionName(); if (versionNameToUse == null) { versionNameToUse = String.valueOf(getVersionCode()); .or(CharMatcher.is('.')) .negate() .replaceFrom(split + "_" + getOutputBaseName(), '_'); fileWriter.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" + " package=\"" + getApplicationId() + "\"\n" + " android:versionCode=\"" + getVersionCode() + "\"\n" + " android:versionName=\"" + versionNameToUse + "\"\n" + " split=\"lib_" + splitName + "\">\n" getBuilder(), variantOutputData.getScope().getVariantScope(), FileUtils.mkdirs( .getScope() .getVariantScope() .getIncrementalDir(getName()), "aapt-temp"))); AaptPackageConfig.Builder aaptConfig = new AaptPackageConfig.Builder();
scope.getTaskName("generate", "SplitAbiRes"), GenerateSplitAbiRes.class); generateSplitAbiRes.setAndroidBuilder(androidBuilder); generateSplitAbiRes.setOutputDirectory(new File( scope.getGlobalScope().getIntermediatesDir(), "abi/" + config.getDirName())); generateSplitAbiRes.setSplits(filters); generateSplitAbiRes.setOutputBaseName(config.getBaseName()); generateSplitAbiRes.setApplicationId(config.getApplicationId()); generateSplitAbiRes.setVersionCode(config.getVersionCode()); generateSplitAbiRes.setVersionName(config.getVersionName()); ConventionMappingHelper.map(generateSplitAbiRes, "debuggable", new Callable<Boolean>() { @Override generateSplitAbiRes.dependsOn( variantOutputData.getScope().getProcessResourcesTask().getName()); variantOutputData.packageSplitAbiTask.setInputFiles(generateSplitAbiRes.getOutputFiles()); variantOutputData.packageSplitAbiTask.setSplits(filters); variantOutputData.packageSplitAbiTask.setOutputBaseName(config.getBaseName());