diff options
7 files changed, 17 insertions, 70 deletions
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 f2bfba4787..c2ddb7cd9f 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 @@ -195,15 +195,14 @@ public class Aapt2ResourcePackagingAction { 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.fromApk( + ResourcesZip.from( mergedAndroidData.getResourceDir(), - packagedResources.getApk(), - packagedResources.getResourceIds()) + mergedAndroidData.getAssetDir(), + packagedResources.resourceIds()) .writeTo(options.resourcesOutput, false /* compress */); profiler.recordEndOf("package"); } } } } - } diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceOutputs.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceOutputs.java index eaf0ae45bc..82001c6065 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceOutputs.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceOutputs.java @@ -105,12 +105,6 @@ public class AndroidResourceOutputs { zip.closeEntry(); } - protected void addEntry(ZipEntry entry, byte[] content) throws IOException { - zip.putNextEntry(entry); - zip.write(content); - zip.closeEntry(); - } - @Override public void close() throws IOException { zip.close(); diff --git a/src/tools/android/java/com/google/devtools/build/android/ResourcesZip.java b/src/tools/android/java/com/google/devtools/build/android/ResourcesZip.java index 5f2b644178..edb254434c 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ResourcesZip.java +++ b/src/tools/android/java/com/google/devtools/build/android/ResourcesZip.java @@ -41,18 +41,12 @@ public class ResourcesZip { private final Path resourcesRoot; private final Path assetsRoot; - private final Optional<Path> apkWithAssets; private final Optional<Path> ids; - private ResourcesZip( - Path resourcesRoot, - Path assetsRoot, - Optional<Path> ids, - Optional<Path> apkWithAssets) { + private ResourcesZip(Path resourcesRoot, Path assetsRoot, Optional<Path> ids) { this.resourcesRoot = resourcesRoot; this.assetsRoot = assetsRoot; this.ids = ids; - this.apkWithAssets = apkWithAssets; } /** @@ -60,7 +54,7 @@ public class ResourcesZip { * @param assetsRoot The root of the raw assets. */ public static ResourcesZip from(Path resourcesRoot, Path assetsRoot) { - return new ResourcesZip(resourcesRoot, assetsRoot, Optional.empty(), Optional.empty()); + return new ResourcesZip(resourcesRoot, assetsRoot, Optional.empty()); } /** @@ -70,23 +64,7 @@ public class ResourcesZip { */ public static ResourcesZip from(Path resourcesRoot, Path assetsRoot, Path resourceIds) { return new ResourcesZip( - resourcesRoot, - assetsRoot, - Optional.of(resourceIds).filter(Files::exists), - Optional.empty()); - } - - /** - * @param resourcesRoot The root of the raw resources. - * @param apkWithAssets The apk containing assets. - * @param resourceIds Optional path to a file containing the resource ids. - */ - public static ResourcesZip fromApk(Path resourcesRoot, Path apkWithAssets, Path resourceIds) { - return new ResourcesZip( - resourcesRoot, - null /* assetsRoot */, - Optional.of(resourceIds).filter(Files::exists), - Optional.of(apkWithAssets)); + resourcesRoot, assetsRoot, Optional.of(resourceIds).filter(Files::exists)); } /** Creates a ResourcesZip from an archive by expanding into the workingDirectory. */ @@ -138,24 +116,7 @@ public class ResourcesZip { } visitor.writeEntries(); } - - if (apkWithAssets.isPresent()){ - ZipFile apkZip = new ZipFile(apkWithAssets.get().toString()); - apkZip - .stream() - .filter(entry -> entry.getName().startsWith("assets/")) - .forEach( - entry -> { - try { - zip.addEntry( - entry, - ByteStreams.toByteArray(apkZip.getInputStream(entry))); - } catch (IOException e) { - throw new RuntimeException(e); - } - }); - zip.addEntry("assets/", new byte[0], ZipEntry.STORED); - } else if (Files.exists(assetsRoot)) { + if (Files.exists(assetsRoot)) { ZipBuilderVisitorWithDirectories visitor = new ZipBuilderVisitorWithDirectories(zip, assetsRoot, "assets"); visitor.setCompress(compress); @@ -189,7 +150,7 @@ public class ResourcesZip { packages, rTxt, classJar, manifest, proguardMapping, resourcesRoot, logFile) .shrink(workingDirectory); return ShrunkResources.of( - new ResourcesZip(workingDirectory, assetsRoot, ids, Optional.empty()), + new ResourcesZip(workingDirectory, assetsRoot, ids), new UnvalidatedAndroidData( ImmutableList.of(workingDirectory), ImmutableList.of(assetsRoot), manifest)); } diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java index faad2cd868..6f77b5966e 100644 --- a/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java +++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/PackagedResources.java @@ -119,11 +119,7 @@ public class PackagedResources { return of(apk, rTxt, proguardConfig, mainDexProguard, sourceJarPath, resourceIds); } - public Path getResourceIds() { + public Path resourceIds() { return resourceIds; } - - public Path getApk() { - return apk; - } } diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java index b912cc141e..6e1fba18c7 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/PluralXmlResourceValue.java @@ -17,7 +17,6 @@ import com.android.aapt.Resources.Plural; import com.android.aapt.Resources.Value; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; -import com.google.common.xml.XmlEscapers; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.ValuesResourceDefinition; import com.google.devtools.build.android.AndroidResourceSymbolSink; @@ -144,10 +143,13 @@ public class PluralXmlResourceValue implements XmlResourceValue { for (Plural.Entry entry : plural.getEntryList()) { String name = entry.getArity().toString().toLowerCase(); String value = - XmlEscapers.xmlContentEscaper().escape( - entry.getItem() - .getStr() - .getValue()); + entry + .getItem() + .getStr() + .toString() + .replace("value: \"", "") + .replace("\"", "") + .replace('\n', ' '); items.put(name, value); } diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java index 9b9285621a..4006d4d7a4 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/SimpleXmlResourceValue.java @@ -20,7 +20,6 @@ import com.android.aapt.Resources.Value; import com.android.resources.ResourceType; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; -import com.google.common.xml.XmlEscapers; import com.google.devtools.build.android.AndroidDataWritingVisitor; import com.google.devtools.build.android.AndroidDataWritingVisitor.StartTag; import com.google.devtools.build.android.AndroidResourceSymbolSink; @@ -237,7 +236,7 @@ public class SimpleXmlResourceValue implements XmlResourceValue { String stringValue = null; if (item.hasStr()) { - stringValue = XmlEscapers.xmlContentEscaper().escape(item.getStr().getValue()); + stringValue = item.getStr().toString(); } else if (item.hasRef()) { stringValue = "@" + item.getRef().getName(); } else if (item.hasStyledStr()) { diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java index 0f6369d68b..55c3d00fdd 100644 --- a/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java +++ b/src/tools/android/java/com/google/devtools/build/android/xml/StyleXmlResourceValue.java @@ -86,10 +86,6 @@ public class StyleXmlResourceValue implements XmlResourceValue { if (style.hasParent()) { parent = proto.getCompoundValue().getStyle().getParent().getName(); - if (parent.startsWith("style/")) { - //Aapt2 compile breaks when style parent references are prepended with 'style/' - parent = parent.substring(6); - } } Map<String, String> items = itemMapFromProto(style); |