Android資源混淆打包工具

weixin_34321977發表於2017-03-29

首先我們對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系統的是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。

相關文章