summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYohann Roussel <yroussel@google.com>2013-08-21 21:17:24 +0200
committerBrian Carlstrom <bdc@google.com>2013-08-28 16:38:19 -0700
commit3abdb48fdefcc3136a8d7f9c168a305d9be9690e (patch)
tree4a035a5ba5096ee696d10250d410020eadea9402
parent4c656e4ec2f5c5036dc67fb4034c1e7ff7abf343 (diff)
downloadandroid_dalvik-3abdb48fdefcc3136a8d7f9c168a305d9be9690e.tar.gz
android_dalvik-3abdb48fdefcc3136a8d7f9c168a305d9be9690e.tar.bz2
android_dalvik-3abdb48fdefcc3136a8d7f9c168a305d9be9690e.zip
Fix 2 filtering problems in multi dex + main list.
- Classes in archives were added in all dexes. - Adding resources could be done twice in non "strictNameCheck" mode (when using BestEffortMainDexListFilter) if there was 2 secondary dex. (cherry picked from commit ad27e19691c6723a801b127f8802f5cdf4f44359) Change-Id: I5cbc1b273518e868fdd3d642d50488ddcbec2af6
-rw-r--r--dx/src/com/android/dx/cf/direct/ClassPathOpener.java27
-rw-r--r--dx/src/com/android/dx/command/dexer/Main.java4
2 files changed, 18 insertions, 13 deletions
diff --git a/dx/src/com/android/dx/cf/direct/ClassPathOpener.java b/dx/src/com/android/dx/cf/direct/ClassPathOpener.java
index 6d3373339..c9fe275cd 100644
--- a/dx/src/com/android/dx/cf/direct/ClassPathOpener.java
+++ b/dx/src/com/android/dx/cf/direct/ClassPathOpener.java
@@ -17,6 +17,7 @@
package com.android.dx.cf.direct;
import com.android.dex.util.FileUtils;
+
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
@@ -264,22 +265,24 @@ public class ClassPathOpener {
}
String path = one.getName();
- InputStream in = zip.getInputStream(one);
+ if (filter.accept(path)) {
+ InputStream in = zip.getInputStream(one);
- baos.reset();
- for (;;) {
- int amt = in.read(buf);
- if (amt < 0) {
- break;
- }
+ baos.reset();
+ for (;;) {
+ int amt = in.read(buf);
+ if (amt < 0) {
+ break;
+ }
- baos.write(buf, 0, amt);
- }
+ baos.write(buf, 0, amt);
+ }
- in.close();
+ in.close();
- byte[] bytes = baos.toByteArray();
- any |= consumer.processFileBytes(path, one.getTime(), bytes);
+ byte[] bytes = baos.toByteArray();
+ any |= consumer.processFileBytes(path, one.getTime(), bytes);
+ }
}
zip.close();
diff --git a/dx/src/com/android/dx/command/dexer/Main.java b/dx/src/com/android/dx/command/dexer/Main.java
index d9f6ab06e..042a0866e 100644
--- a/dx/src/com/android/dx/command/dexer/Main.java
+++ b/dx/src/com/android/dx/command/dexer/Main.java
@@ -1103,8 +1103,10 @@ public class Main {
}
}
}
+ return false;
+ } else {
+ return true;
}
- return false;
}
private static String getSimpleName(String path) {