diff options
author | Yohann Roussel <yroussel@google.com> | 2013-08-21 21:17:24 +0200 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2013-08-28 16:38:19 -0700 |
commit | 3abdb48fdefcc3136a8d7f9c168a305d9be9690e (patch) | |
tree | 4a035a5ba5096ee696d10250d410020eadea9402 | |
parent | 4c656e4ec2f5c5036dc67fb4034c1e7ff7abf343 (diff) | |
download | android_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.java | 27 | ||||
-rw-r--r-- | dx/src/com/android/dx/command/dexer/Main.java | 4 |
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) { |