Don't convert resource locations into system specific paths.
We never use these as a path (removed getter) - and all resource paths inside the ap_ file is always unix style.
This is causing issues on windows when doing lookups of the path compared to the resources.arsc values
Change-Id: Iaf4adae2af2d8d0ac4d7e64dd4ab4aedfab49e0c
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 8184741..b4f89a3 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -127,8 +127,6 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -1051,7 +1049,7 @@
for (AndroidResourceInput androidResource : androidResourceProvider.getAndroidResources()) {
try {
byte[] bytes = androidResource.getByteStream().readAllBytes();
- Path path = Paths.get(androidResource.getPath().location());
+ String path = androidResource.getPath().location();
switch (androidResource.getKind()) {
case MANIFEST:
resourceShrinkerBuilder.addManifest(path, bytes);
diff --git a/src/resourceshrinker/java/com/android/build/shrinker/r8integration/LegacyResourceShrinker.java b/src/resourceshrinker/java/com/android/build/shrinker/r8integration/LegacyResourceShrinker.java
index 019a123..6cbc8c9 100644
--- a/src/resourceshrinker/java/com/android/build/shrinker/r8integration/LegacyResourceShrinker.java
+++ b/src/resourceshrinker/java/com/android/build/shrinker/r8integration/LegacyResourceShrinker.java
@@ -61,8 +61,8 @@
public static class Builder {
private final Map<String, byte[]> dexInputs = new HashMap<>();
- private final Map<Path, PathAndBytes> resFolderInputs = new HashMap<>();
- private final Map<Path, PathAndBytes> xmlInputs = new HashMap<>();
+ private final Map<String, PathAndBytes> resFolderInputs = new HashMap<>();
+ private final Map<String, PathAndBytes> xmlInputs = new HashMap<>();
private final List<byte[]> keepRuleInput = new ArrayList<>();
private final List<PathAndBytes> manifests = new ArrayList<>();
@@ -72,12 +72,12 @@
private Builder() {}
- public Builder addManifest(Path path, byte[] bytes) {
+ public Builder addManifest(String path, byte[] bytes) {
manifests.add(new PathAndBytes(bytes, path));
return this;
}
- public Builder addResourceTable(Path path, byte[] bytes, FeatureSplit featureSplit) {
+ public Builder addResourceTable(String path, byte[] bytes, FeatureSplit featureSplit) {
resourceTables.put(new PathAndBytes(bytes, path), featureSplit);
try {
ResourceTable resourceTable = ResourceTable.parseFrom(bytes);
@@ -98,7 +98,7 @@
return this;
}
- public Builder addResFolderInput(Path path, byte[] bytes) {
+ public Builder addResFolderInput(String path, byte[] bytes) {
PathAndBytes existing = resFolderInputs.get(path);
if (existing != null) {
assert Arrays.equals(existing.getBytes(), bytes);
@@ -108,7 +108,7 @@
return this;
}
- public Builder addXmlInput(Path path, byte[] bytes) {
+ public Builder addXmlInput(String path, byte[] bytes) {
PathAndBytes existing = xmlInputs.get(path);
if (existing != null) {
assert Arrays.equals(existing.getBytes(), bytes);
@@ -330,20 +330,16 @@
private static class PathAndBytes {
private final byte[] bytes;
- private final Path path;
+ private final String path;
- private PathAndBytes(byte[] bytes, Path path) {
+ private PathAndBytes(byte[] bytes, String path) {
this.bytes = bytes;
this.path = path;
}
- public Path getPath() {
- return path;
- }
-
public String getPathWithoutRes() {
- assert path.toString().startsWith("res/");
- return path.toString().substring(4);
+ assert path.startsWith("res/");
+ return path.substring(4);
}
public byte[] getBytes() {