From 54c86b4c6f29f4b0d52e1db702d30c10f3ac8b56 Mon Sep 17 00:00:00 2001 From: corysmith Date: Fri, 22 Sep 2017 02:02:35 +0200 Subject: Action for resource shrinking with aapt2 Introduces the ResourcesZip class to more easily handle processing merged resources. RELNOTES: None PiperOrigin-RevId: 169622715 --- .../android/Aapt2ResourcePackagingAction.java | 52 +++++++++++----------- 1 file changed, 25 insertions(+), 27 deletions(-) (limited to 'src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java') diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java index 4b53f88423..2ddcdc9acc 100644 --- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java @@ -23,6 +23,7 @@ import com.google.devtools.build.android.AndroidResourceMerger.MergingException; import com.google.devtools.build.android.AndroidResourceProcessingAction.Options; import com.google.devtools.build.android.aapt2.Aapt2ConfigOptions; import com.google.devtools.build.android.aapt2.CompiledResources; +import com.google.devtools.build.android.aapt2.PackagedResources; import com.google.devtools.build.android.aapt2.ResourceCompiler; import com.google.devtools.build.android.aapt2.ResourceLinker; import com.google.devtools.build.android.aapt2.StaticLibrary; @@ -84,13 +85,9 @@ public class Aapt2ResourcePackagingAction { final Path densityManifest = tmp.resolve("manifest-filtered/AndroidManifest.xml"); final Path processedManifest = tmp.resolve("manifest-processed/AndroidManifest.xml"); - final Path dummyManifest = tmp.resolve("manifest-aapt-dummy/AndroidManifest.xml"); final Path databindingResourcesRoot = Files.createDirectories(tmp.resolve("android_data_binding_resources")); - final Path databindingMetaData = - Files.createDirectories(tmp.resolve("android_data_binding_metadata")); final Path compiledResources = Files.createDirectories(tmp.resolve("compiled")); - final Path staticLinkedOut = Files.createDirectories(tmp.resolve("static-linked")); final Path linkedOut = Files.createDirectories(tmp.resolve("linked")); profiler.recordEndOf("setup").startTask("merging"); @@ -157,30 +154,31 @@ public class Aapt2ResourcePackagingAction { .map(DependencyAndroidData::getStaticLibrary) .collect(toList()); - ResourceLinker.create(aaptConfigOptions.aapt2, linkedOut) - .profileUsing(profiler) - .dependencies(ImmutableList.of(StaticLibrary.from(aaptConfigOptions.androidJar))) - .include(dependencies) - .buildVersion(aaptConfigOptions.buildToolsVersion) - .filterToDensity(densitiesToFilter) - .link(compiled) - .copyPackageTo(options.packagePath) - .copyProguardTo(options.proguardOutput) - .copyMainDexProguardTo(options.mainDexProguardOutput) - .createSourceJar(options.srcJarOutput) - .copyRTxtTo(options.rOutput); + final PackagedResources packagedResources = + ResourceLinker.create(aaptConfigOptions.aapt2, linkedOut) + .profileUsing(profiler) + .dependencies(ImmutableList.of(StaticLibrary.from(aaptConfigOptions.androidJar))) + .include(dependencies) + .buildVersion(aaptConfigOptions.buildToolsVersion) + .filterToDensity(densitiesToFilter) + .link(compiled) + .copyPackageTo(options.packagePath) + .copyProguardTo(options.proguardOutput) + .copyMainDexProguardTo(options.mainDexProguardOutput) + .createSourceJar(options.srcJarOutput) + .copyRTxtTo(options.rOutput); profiler.recordEndOf("link"); - } - if (options.resourcesOutput != null) { - profiler.startTask("package"); - // The compiled resources and the merged resources should be the same. - // TODO(corysmith): Decompile or otherwise provide the exact resources in the apk. - AndroidResourceOutputs.createResourcesZip( - mergedAndroidData.getResourceDir(), - mergedAndroidData.getAssetDir(), - options.resourcesOutput, - false /* compress */); - profiler.recordEndOf("package"); + if (options.resourcesOutput != null) { + profiler.startTask("package"); + // The compiled resources and the merged resources should be the same. + // TODO(corysmith): Decompile or otherwise provide the exact resources in the apk. + ResourcesZip.from( + mergedAndroidData.getResourceDir(), + mergedAndroidData.getAssetDir(), + packagedResources.resourceIds()) + .writeTo(options.resourcesOutput, false /* compress */); + profiler.recordEndOf("package"); + } } } catch (MergingException e) { logger.severe("Merging exception: " + e.getMessage()); -- cgit v1.2.3