package com.github.nukc.plugin.axml.decode; import java.io.IOException; public class ResBlock implements IAXMLSerialize{ private static final int TAG = 0x00080180; private int mChunkSize; private int[] mRawResIds; public void print(){ StringBuilder sb = new StringBuilder(); for(int id : getResourceIds()){ sb.append(id); sb.append(" "); } System.out.println(sb.toString()); } public void read(IntReader reader) throws IOException{ mChunkSize = reader.readInt(); if(mChunkSize < 8 || (mChunkSize % 4)!= 0){ throw new IOException("Invalid resource ids size ("+mChunkSize+")."); } mRawResIds = reader.readIntArray(mChunkSize/4 - 2);//subtract base offset (type + size) } private final int INT_SIZE = 4; public void prepare(){ int base = 2*INT_SIZE; int resSize = mRawResIds == null ? 0:mRawResIds.length*INT_SIZE; mChunkSize = base + resSize; } @Override public void write(IntWriter writer) throws IOException { writer.writeInt(TAG); writer.writeInt(mChunkSize); if(mRawResIds != null){ for(int id : mRawResIds){ writer.writeInt(id); } } } public int[] getResourceIds(){ return mRawResIds; } public int getResourceIdAt(int index){ return mRawResIds[index]; } @Override public int getSize() { return mChunkSize; } @Override public int getType() { return TAG; } @Override public void setSize(int size) { // TODO Auto-generated method stub } @Override public void setType(int type) { // TODO Auto-generated method stub } }