@Override public MapItem readItem(int index) { int mapItemOffset = mapOffset + 4 + index * MapItem.ITEM_SIZE; return new MapItem(DexBackedDexFile.this, mapItemOffset); }
/** * Gets the dex version from a dex header * * @param buf A byte array containing at least the first 7 bytes of a dex file * @param offset The offset within the buffer to the beginning of the dex header * @return The dex version if the header is valid or -1 if the header is invalid */ public static int getVersion(byte[] buf, int offset) { if (!verifyMagic(buf, offset)) { return -1; } return getVersionUnchecked(buf, offset); }
public int getClassOffset() { return dexFile.readSmallUint(CLASS_START_OFFSET); }
public static String[] getStrings(@Nonnull RawDexFile dexFile) { MapItem mapItem = dexFile.getMapItemForSection(ItemType.STRING_ID_ITEM); if (mapItem == null) { return new String[0]; } int stringCount = mapItem.getItemCount(); String[] ret = new String[stringCount]; for (int i=0; i<stringCount; i++) { ret[i] = dexFile.getString(i); } return ret; } }
@Nonnull public String getName() { return ItemType.getItemTypeName(getType()); }
public int getOdexVersion() { return OdexHeaderItem.getVersion(odexBuf, 0); }
public int getMapOffset() { return dexFile.readSmallUint(MAP_OFFSET); }
public int getProtoCount() { return dexFile.readSmallUint(PROTO_COUNT_OFFSET); }
public int getMethodCount() { return dexFile.readSmallUint(METHOD_COUNT_OFFSET); }
public int getHeaderSize() { return dexFile.readSmallUint(HEADER_SIZE_OFFSET); }
public int getTypeCount() { return dexFile.readSmallUint(TYPE_COUNT_OFFSET); }
public int getFieldCount() { return dexFile.readSmallUint(FIELD_COUNT_OFFSET); }
public int getClassCount() { return dexFile.readSmallUint(CLASS_COUNT_OFFSET); }
public int getStringCount() { return dexFile.readSmallUint(STRING_COUNT_OFFSET); }
public int getStringOffset() { return dexFile.readSmallUint(STRING_START_OFFSET); }
public int getProtoOffset() { return dexFile.readSmallUint(PROTO_START_OFFSET); }
public int getFieldOffset() { return dexFile.readSmallUint(FIELD_START_OFFSET); }
public int getChecksum() { return dexFile.readSmallUint(CHECKSUM_OFFSET); }
public int getTypeOffset() { return dexFile.readSmallUint(TYPE_START_OFFSET); }
public int getMethodOffset() { return dexFile.readSmallUint(METHOD_START_OFFSET); }