首先我們對resources.arsc的文件格式有一定的了解。resources.arsc一共有5種chunk類型,分別為TYPETABLE,TYPEPACKAGE,TYPE_STRING,TYPE_TYPE,TYPECONFIG。
--table,使整個reousces table的開始,它的chunksize即是整個文件的大小。
--package,指的是一個package的開始,其實在resources.arsc是可以有多個package的。而packageID即是資源resID的最高八位,一般來說Android系統(tǒng)的是1(0x01),普通的例如com.tencent.mm可能會是127(0x7f),剩下的是從2開始起步。當然這個我們在aapt也是可以指定的(1-127即八位的合法空間,一些混合編譯就是改變這個packageID)。
--string,代表stringblock,我們一共有三種類型的stringblock。分別是table stringblock,typename stringblock,specaname stringblock。
--type,這里講的是typename stringblock里面我們用到的各種type(用到多少種類型的type就有多少個type chunk),例如attr,drawable,layout,id,color,anim等,Type ID是緊跟著Package ID。
--config,即是Android用來描述資源維度,例如橫豎屏,屏幕密度,語言等。對于每一種type,它定義了多少種config,它后面就緊跟著多少個config chunk,例如我們定義了drawable-mdpi,drawable-hdpi,那后面就會有兩個config。
--entry,盡管沒有entry這個chunk,但每個config里面都會有很多個entry,例如drawable-mdpi中icon1.png和icon2.png兩個drawable,那在mdpi這個config中就存在兩個entry。