Android aapt输出格式

时间:2013-08-20 13:45:26

标签: android apk aapt

aapt的输出格式是什么?

例如检查此处的输出http://elinux.org/Android_aapt

  

config 0 lang = - cnt = - orien = 0 touch = 0 density = def key = 0 infl = 0 nav = 0 w = 0 h = 0 sz = 0 lng = 0

     

资源0x7f040000 com.android.spare_parts:xml / spare_parts:t = 0x03 d = 0x00000003(s = 0x0008 r = 0x00)

每个字段的含义是什么?有什么文件或东西吗?

1 个答案:

答案 0 :(得分:1)

这个答案解决了你的例子的第二行,aapt转储在resources.arsc中定义的值的表示。

在您的示例中,com.android.spare_parts包中ID为0x7f04000的资源是一个名为spare_parts的字符串,其值在字符串表中的索引3处定义。

该行的格式如下:

resource <resource ID> <package>:<type>/<name> t=<dataType> d=<data> (s=<size> r=<res0>)

resource ID是您在R.java中找到的well known ID。

package只是定义此资源的包,对于包中的所有资源都是相同的。

type资源的类型,资源表中其他地方定义的一些字符串之一

name资源的名称

data是资源值,根据dataType解释(见下文)

size是值struct的大小(不是值的大小)。似乎永远是0x0008。

res0always 0x00。

dataType是定义here的常量之一:

// Contains no data.
TYPE_NULL = 0x00,
// The 'data' holds a ResTable_ref, a reference to another resource
// table entry.
TYPE_REFERENCE = 0x01,
// The 'data' holds an attribute resource identifier.
TYPE_ATTRIBUTE = 0x02,
// The 'data' holds an index into the containing resource table's
// global value string pool.
TYPE_STRING = 0x03,
// The 'data' holds a single-precision floating point number.
TYPE_FLOAT = 0x04,
// The 'data' holds a complex number encoding a dimension value,
// such as "100in".
TYPE_DIMENSION = 0x05,
// The 'data' holds a complex number encoding a fraction of a
// container.
TYPE_FRACTION = 0x06,

// Beginning of integer flavors...
TYPE_FIRST_INT = 0x10,

// The 'data' is a raw integer value of the form n..n.
TYPE_INT_DEC = 0x10,
// The 'data' is a raw integer value of the form 0xn..n.
TYPE_INT_HEX = 0x11,
// The 'data' is either 0 or 1, for input "false" or "true" respectively.
TYPE_INT_BOOLEAN = 0x12,

// Beginning of color integer flavors...
TYPE_FIRST_COLOR_INT = 0x1c,

// The 'data' is a raw integer value of the form #aarrggbb.
TYPE_INT_COLOR_ARGB8 = 0x1c,
// The 'data' is a raw integer value of the form #rrggbb.
TYPE_INT_COLOR_RGB8 = 0x1d,
// The 'data' is a raw integer value of the form #argb.
TYPE_INT_COLOR_ARGB4 = 0x1e,
// The 'data' is a raw integer value of the form #rgb.
TYPE_INT_COLOR_RGB4 = 0x1f,

// ...end of integer flavors.
TYPE_LAST_COLOR_INT = 0x1f,

// ...end of integer flavors.
TYPE_LAST_INT = 0x1f