mirror of
https://github.com/revanced/smali.git
synced 2025-05-16 22:17:07 +02:00
Refactor DexBackedDexFile in preparation for cdex implementation
This pulls out some of the functionality into protected methods that can be overrided by the cdex implementation
This commit is contained in:
parent
dc79917ece
commit
927a8b3c7c
@ -36,6 +36,8 @@ import org.jf.dexlib2.Opcodes;
|
|||||||
import org.jf.dexlib2.ReferenceType;
|
import org.jf.dexlib2.ReferenceType;
|
||||||
import org.jf.dexlib2.dexbacked.raw.*;
|
import org.jf.dexlib2.dexbacked.raw.*;
|
||||||
import org.jf.dexlib2.dexbacked.reference.*;
|
import org.jf.dexlib2.dexbacked.reference.*;
|
||||||
|
import org.jf.dexlib2.dexbacked.util.AnnotationsDirectory;
|
||||||
|
import org.jf.dexlib2.dexbacked.util.EncodedArrayItemIterator;
|
||||||
import org.jf.dexlib2.dexbacked.util.FixedSizeList;
|
import org.jf.dexlib2.dexbacked.util.FixedSizeList;
|
||||||
import org.jf.dexlib2.dexbacked.util.FixedSizeSet;
|
import org.jf.dexlib2.dexbacked.util.FixedSizeSet;
|
||||||
import org.jf.dexlib2.iface.DexFile;
|
import org.jf.dexlib2.iface.DexFile;
|
||||||
@ -75,15 +77,10 @@ public class DexBackedDexFile implements DexFile {
|
|||||||
dexBuffer = new DexBuffer(buf, offset);
|
dexBuffer = new DexBuffer(buf, offset);
|
||||||
dataBuffer = new DexBuffer(buf, offset + getBaseDataOffset());
|
dataBuffer = new DexBuffer(buf, offset + getBaseDataOffset());
|
||||||
|
|
||||||
int dexVersion;
|
int dexVersion = getVersion(buf, offset, verifyMagic);
|
||||||
if (verifyMagic) {
|
|
||||||
dexVersion = DexUtil.verifyDexHeader(buf, offset);
|
|
||||||
} else {
|
|
||||||
dexVersion = HeaderItem.getVersion(buf, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opcodes == null) {
|
if (opcodes == null) {
|
||||||
this.opcodes = Opcodes.forDexVersion(dexVersion);
|
this.opcodes = getDefaultOpcodes(dexVersion);
|
||||||
} else {
|
} else {
|
||||||
this.opcodes = opcodes;
|
this.opcodes = opcodes;
|
||||||
}
|
}
|
||||||
@ -111,6 +108,18 @@ public class DexBackedDexFile implements DexFile {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int getVersion(byte[] buf, int offset, boolean verifyMagic) {
|
||||||
|
if (verifyMagic) {
|
||||||
|
return DexUtil.verifyDexHeader(buf, offset);
|
||||||
|
} else {
|
||||||
|
return HeaderItem.getVersion(buf, offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Opcodes getDefaultOpcodes(int version) {
|
||||||
|
return Opcodes.forDexVersion(version);
|
||||||
|
}
|
||||||
|
|
||||||
public DexBuffer getBuffer() {
|
public DexBuffer getBuffer() {
|
||||||
return dexBuffer;
|
return dexBuffer;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user