/** * Calculate and return the private size of a string reference. * * Calculated as: string_data_off + string_data_item size * * @return size in bytes */ public int getSize() { int size = StringIdItem.ITEM_SIZE; //uint for string_data_off //add the string data length: int stringOffset = dexFile.getStringIdItemOffset(stringIndex); int stringDataOffset = dexFile.readSmallUint(stringOffset); DexReader reader = dexFile.readerAt(stringDataOffset); size += reader.peekSmallUleb128Size(); int utf16Length = reader.readSmallUleb128(); //and string data itself: size += reader.peekStringLength(utf16Length); return size; } }
if (staticInitialValuesOffset != 0) { DexReader reader = dexFile.readerAt(staticInitialValuesOffset); size += reader.peekSmallUleb128Size(); //encoded_array size field
/** * Calculate and return the private size of a string reference. * * Calculated as: string_data_off + string_data_item size * * @return size in bytes */ public int getSize() { int size = StringIdItem.ITEM_SIZE; //uint for string_data_off //add the string data length: int stringOffset = dexFile.getStringIdItemOffset(stringIndex); int stringDataOffset = dexFile.readSmallUint(stringOffset); DexReader reader = dexFile.readerAt(stringDataOffset); size += reader.peekSmallUleb128Size(); int utf16Length = reader.readSmallUleb128(); //and string data itself: size += reader.peekStringLength(utf16Length); return size; } }
if (staticInitialValuesOffset != 0) { DexReader reader = dexFile.readerAt(staticInitialValuesOffset); size += reader.peekSmallUleb128Size(); //encoded_array size field