.apc
).sapk
).apc
)The APC format (AAPT2 Container Format) is generated by AAPT2 during the compile phase and consumed by the AAPT2 link phase. It is a simple container format for storing compiled PNGs, binary and protobuf XML, and intermediate protobuf resource tables. It also stores all associated meta-data from the compile phase.
The file starts with a simple header. All multi-byte fields are little-endian.
Size (in bytes) | Field | Description |
---|---|---|
4 | magic | The magic bytes must equal 'AAPT' or 0x54504141 . |
4 | version | The version of the container format. |
4 | entry_count | The number of entries in this container. |
This is followed by entry_count
of the following data structure. It must be aligned on a 32-bit boundary, so if a previous entry ends unaligned, padding must be inserted.
Size (in bytes) | Field | Description |
---|---|---|
4 | entry_type | The type of the entry. This can be one of two types: RES_TABLE (0x00000000) or RES_FILE (0x00000001) . |
8 | entry_length | The length of the data that follows. Do not use if entry_type is RES_FILE ; this value may be wrong. |
entry_length | data | The payload. The contents of this varies based on the entry_type . |
If the entry_type
is equal to RES_TABLE (0x00000000)
, the data
field contains a serialized aapt.pb.ResourceTable.
If the entry_type
is equal to RES_FILE (0x00000001)
, the data
field contains the following:
Size (in bytes) | Field | Description |
---|---|---|
4 | header_size | The size of the header field. |
8 | data_size | The size of the data field. |
header_size | header | The serialized Protobuf message aapt.pb.internal.CompiledFile. |
x | header_padding | Up to 3 bytes of zeros, if padding is necessary to align the data field on a 32-bit boundary. |
data_size | data | The payload, which is determined by the type field in the aapt.pb.internal.CompiledFile . This can be a PNG file, binary XML, or aapt.pb.XmlNode. |
y | data_padding | Up to 3 bytes of zeros, if data_size is not a multiple of 4. |
.sapk
)