mirror of
https://github.com/revanced/multidexlib2.git
synced 2025-05-29 21:00:15 +02:00
Fix MultiDexContainerBackedDexFile
This commit is contained in:
parent
ebaaface13
commit
9f8ecb03c4
@ -27,25 +27,25 @@ public class MultiDexContainerBackedDexFile<T extends DexFile> implements DexFil
|
|||||||
private final Opcodes opcodes;
|
private final Opcodes opcodes;
|
||||||
|
|
||||||
public MultiDexContainerBackedDexFile(MultiDexContainer<T> container) throws IOException {
|
public MultiDexContainerBackedDexFile(MultiDexContainer<T> container) throws IOException {
|
||||||
Set<? extends ClassDef> classes;
|
|
||||||
List<String> entryNames = container.getDexEntryNames();
|
List<String> entryNames = container.getDexEntryNames();
|
||||||
if (entryNames.size() == 1) {
|
if (entryNames.size() == 1) {
|
||||||
String entryName = entryNames.get(0);
|
String entryName = entryNames.get(0);
|
||||||
T entry = container.getEntry(entryName);
|
T entry = container.getEntry(entryName);
|
||||||
classes = entry.getClasses();
|
classes = Collections.unmodifiableSet(entry.getClasses());
|
||||||
|
opcodes = entry.getOpcodes();
|
||||||
} else {
|
} else {
|
||||||
LinkedHashSet<ClassDef> accumulatedClasses = new LinkedHashSet<>();
|
LinkedHashSet<ClassDef> accumulatedClasses = new LinkedHashSet<>();
|
||||||
|
Opcodes resolvedOpcodes = null;
|
||||||
for (String entryName : entryNames) {
|
for (String entryName : entryNames) {
|
||||||
T entry = container.getEntry(entryName);
|
T entry = container.getEntry(entryName);
|
||||||
Set<? extends ClassDef> entryClasses = entry.getClasses();
|
for (ClassDef entryClass : entry.getClasses()) {
|
||||||
for (ClassDef entryClass : entryClasses) {
|
|
||||||
if (!accumulatedClasses.add(entryClass)) throw new DuplicateTypeException(entryClass.getType());
|
if (!accumulatedClasses.add(entryClass)) throw new DuplicateTypeException(entryClass.getType());
|
||||||
}
|
}
|
||||||
|
resolvedOpcodes = OpcodeUtils.getNewestOpcodes(resolvedOpcodes, entry.getOpcodes(), true);
|
||||||
}
|
}
|
||||||
classes = accumulatedClasses;
|
classes = Collections.unmodifiableSet(accumulatedClasses);
|
||||||
|
opcodes = resolvedOpcodes;
|
||||||
}
|
}
|
||||||
this.classes = Collections.unmodifiableSet(classes);
|
|
||||||
this.opcodes = container.getOpcodes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user