Fixed Android M and N deodexing(Fixes #503)

This commit is contained in:
Furniel 2017-03-29 12:39:44 +03:00
parent 48cde6219d
commit 9df7a67273

View File

@ -588,6 +588,14 @@ public class OatFile extends BaseDexBuffer implements MultiDexContainer<OatDexFi
int dexOffset = readSmallUint(offset);
offset += 4;
byte[] buf;
if (getOatVersion() >= 87 && vdexProvider != null && vdexProvider.getVdex() != null) {
buf = vdexProvider.getVdex();
} else {
buf = OatFile.this.buf;
dexOffset += oatHeader.headerOffset;
}
if (getOatVersion() >= 75) {
offset += 4; // offset to class offsets table
}
@ -602,14 +610,6 @@ public class OatFile extends BaseDexBuffer implements MultiDexContainer<OatDexFi
index++;
byte[] buf;
if (getOatVersion() >= 87 && vdexProvider != null && vdexProvider.getVdex() != null) {
buf = vdexProvider.getVdex();
} else {
buf = OatFile.this.buf;
offset += oatHeader.headerOffset;
}
return new DexEntry(filename, buf, dexOffset);
}