Minimal fix for merging jars with dir entries
Minimal fix for merging jars to avoid dir entries. When merging
jars we now skip directory entries; it was causing issues
when running benchmarks with --mode app_process for entries
like "com/".
Testing:
vogar --mode app_process --benchmark \
frameworks/base/core/tests/benchmarks/src/com/android/internal/net/NetworkStatsFactoryBenchmark.java
make vogar-tests
java -cp ./out/host/linux-x86/framework/vogar-tests.jar \
org.junit.runner.JUnitCore vogar.AllTests
Bug: 129449556
Test: See above
Change-Id: I38d4ba88c127d0aca5117acc301966d358a20e76
diff --git a/src/vogar/android/AndroidSdk.java b/src/vogar/android/AndroidSdk.java
index b19f404..f59c9b9 100644
--- a/src/vogar/android/AndroidSdk.java
+++ b/src/vogar/android/AndroidSdk.java
@@ -28,6 +28,7 @@
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
import java.util.jar.JarOutputStream;
+
import vogar.Classpath;
import vogar.Dexer;
import vogar.HostFileCache;
@@ -387,7 +388,14 @@
if (entry.getName().endsWith(".class")) {
continue;
}
+
+ // Skip directories as they can cause duplicates.
+ if (entry.isDirectory()) {
+ continue;
+ }
+
outputJar.putNextEntry(entry);
+
int length;
while ((length = inputJar.read(buffer)) >= 0) {
if (length > 0) {