Fix AbstractMultiDexContainer

This commit is contained in:
Lanchon 2018-06-12 21:36:19 -03:00
parent 9f8ecb03c4
commit 903e3ed9fb
4 changed files with 4 additions and 22 deletions

View File

@ -15,7 +15,6 @@ import java.util.Collections;
import java.util.Map;
import java.util.List;
import org.jf.dexlib2.Opcodes;
import org.jf.dexlib2.iface.DexFile;
import org.jf.dexlib2.iface.MultiDexContainer;
@ -23,24 +22,15 @@ public abstract class AbstractMultiDexContainer<T extends DexFile> implements Mu
private Map<String, T> entryMap;
private List<String> entryNames;
private Opcodes resolvedOpcodes;
protected AbstractMultiDexContainer() {}
protected void initialize(Map<String, T> entryMap, Opcodes opcodes) {
protected void initialize(Map<String, T> entryMap) {
if (entryMap == null) throw new NullPointerException("entryMap");
if (this.entryMap != null) throw new IllegalStateException("Already initialized");
this.entryMap = entryMap;
// See: https://github.com/JesusFreke/smali/issues/458
entryNames = Collections.unmodifiableList(new ArrayList<>(entryMap.keySet()));
if (opcodes == null) {
//opcodes = getNewestOpcodes();
for (T entry : entryMap.values()) {
opcodes = OpcodeUtils.getNewestOpcodes(opcodes, entry.getOpcodes(), true);
}
//if (opcodes == null) throw nullOpcodes();
}
resolvedOpcodes = opcodes;
}
@Override
@ -53,12 +43,6 @@ public abstract class AbstractMultiDexContainer<T extends DexFile> implements Mu
return entryMap.get(entryName);
}
@Override
public Opcodes getOpcodes() {
//if (resolvedOpcodes == null) throw nullOpcodes();
return resolvedOpcodes;
}
/*
public Opcodes getNewestOpcodes() {
Opcodes opcodes = null;

View File

@ -32,7 +32,7 @@ public class DirectoryDexContainer extends AbstractMultiDexContainer<WrappingMul
if (entryMap.put(entryName, multiDexFile) != null) throwDuplicateEntryName(entryName);
}
}
initialize(entryMap, opcodes);
initialize(entryMap);
}
}

View File

@ -13,7 +13,6 @@ package lanchon.multidexlib2;
import java.util.Collections;
import java.util.Map;
import org.jf.dexlib2.Opcodes;
import org.jf.dexlib2.iface.DexFile;
public class SingletonDexContainer<D extends DexFile> extends AbstractMultiDexContainer<WrappingMultiDexFile<D>> {
@ -31,10 +30,9 @@ public class SingletonDexContainer<D extends DexFile> extends AbstractMultiDexCo
}
public SingletonDexContainer(String entryName, D dexFile) {
Opcodes opcodes = dexFile.getOpcodes();
WrappingMultiDexFile<D> multiDexFile = new BasicMultiDexFile<>(this, entryName, dexFile);
Map<String, WrappingMultiDexFile<D>> entryMap = Collections.singletonMap(entryName, multiDexFile);
initialize(entryMap, opcodes);
initialize(entryMap);
}
}

View File

@ -53,7 +53,7 @@ public class ZipFileDexContainer extends AbstractMultiDexContainer<WrappingMulti
}
}
}
initialize(entryMap, opcodes);
initialize(entryMap);
}
}