From 429f4ac79b5546006b5478a562ca5646c5f43d2c Mon Sep 17 00:00:00 2001 From: Lanchon Date: Mon, 25 Sep 2017 00:28:12 -0300 Subject: [PATCH] Add RawDexIO.writeRawDexFile(DexDataStore dataStore, ...) --- src/main/java/lanchon/multidexlib2/DexIO.java | 7 ++++--- src/main/java/lanchon/multidexlib2/RawDexIO.java | 10 ++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/lanchon/multidexlib2/DexIO.java b/src/main/java/lanchon/multidexlib2/DexIO.java index 1f7668c..6251920 100644 --- a/src/main/java/lanchon/multidexlib2/DexIO.java +++ b/src/main/java/lanchon/multidexlib2/DexIO.java @@ -29,6 +29,7 @@ import com.google.common.collect.PeekingIterator; import org.jf.dexlib2.Opcodes; import org.jf.dexlib2.iface.ClassDef; import org.jf.dexlib2.iface.DexFile; +import org.jf.dexlib2.writer.io.DexDataStore; import org.jf.dexlib2.writer.io.FileDataStore; import org.jf.dexlib2.writer.pool.DexPool; @@ -44,8 +45,8 @@ public class DexIO { // Single-Threaded Write - static void writeRawDexSingleThread(File file, DexFile dexFile, int maxDexPoolSize, DexIO.Logger logger) - throws IOException { + static void writeRawDexSingleThread(DexDataStore dataStore, DexFile dexFile, int maxDexPoolSize, + DexIO.Logger logger, File file) throws IOException { Set classes = dexFile.getClasses(); Iterator classIterator = classes.iterator(); DexPool dexPool = new DexPool(dexFile.getOpcodes()); @@ -60,7 +61,7 @@ public class DexIO { classCount++; } if (logger != null) logger.log(file, SingletonDexContainer.UNDEFINED_ENTRY_NAME, classCount); - dexPool.writeTo(new FileDataStore(file)); + dexPool.writeTo(dataStore); } static void writeMultiDexDirectorySingleThread(boolean multiDex, File directory, DexFileNameIterator nameIterator, diff --git a/src/main/java/lanchon/multidexlib2/RawDexIO.java b/src/main/java/lanchon/multidexlib2/RawDexIO.java index 4a9d3a4..3c5f7f6 100644 --- a/src/main/java/lanchon/multidexlib2/RawDexIO.java +++ b/src/main/java/lanchon/multidexlib2/RawDexIO.java @@ -21,6 +21,8 @@ import org.jf.dexlib2.dexbacked.DexBackedDexFile; import org.jf.dexlib2.dexbacked.raw.HeaderItem; import org.jf.dexlib2.iface.DexFile; import org.jf.dexlib2.util.DexUtil; +import org.jf.dexlib2.writer.io.DexDataStore; +import org.jf.dexlib2.writer.io.FileDataStore; public class RawDexIO { @@ -67,11 +69,15 @@ public class RawDexIO { public static void writeRawDexFile(File file, DexFile dexFile, int maxDexPoolSize, DexIO.Logger logger) throws IOException { - DexIO.writeRawDexSingleThread(file, dexFile, maxDexPoolSize, logger); + DexIO.writeRawDexSingleThread(new FileDataStore(file), dexFile, maxDexPoolSize, logger, file); } public static void writeRawDexFile(File file, DexFile dexFile, int maxDexPoolSize) throws IOException { - DexIO.writeRawDexSingleThread(file, dexFile, maxDexPoolSize, null); + DexIO.writeRawDexSingleThread(new FileDataStore(file), dexFile, maxDexPoolSize, null, null); + } + + public static void writeRawDexFile(DexDataStore dataStore, DexFile dexFile, int maxDexPoolSize) throws IOException { + DexIO.writeRawDexSingleThread(dataStore, dexFile, maxDexPoolSize, null, null); } }