1.
相关概念
1) 换肤
变换应用的背景,控件样式,应用图标及应用内部版式等与风格相关的界面元素
2) 资源
资源由字串,图片,版式等元素组成,通常存放在res目录中,apk打包时利用aapt工具(实现见frameworks/base/tools/aapt)对资源进行解析,并生成apk文件。
打包时资源分成两个部分,一部分完全写入resources.arsc文件(如values*),另一部分的索引信息写入resources.arsc,而自身内容也做相应变化(如:将9patch的png图其中的9patch信息从图片中可见变为记录在文件内部)
3) 相关文件
公用资源存放在/system/framework/framework-res.apk包中,应用资源存放在各个应用的apk包中(含应用图标,内部图片及布局),有的android产品可在设置中换背景图
4) 换肤思路
apk是以zip压缩格式打包的文件,把它解开,然后把其中的图片换成新图片,再打包,替换原系统中的apk包,即可完成换肤。
2. 当前的换肤方法
1) 使用update.zip升级
a) 原理
update.zip通常包含一个update-script脚本,用以决定更新zip中的哪些包到系统中,一般分为全部更换和部分更换,全部更换为更换system, userdata, boot个分区的全部内容,部分更新可以更新单个或多个系统中的文件
b) 方法
下载theme的压缩包,放入SD卡,关机后启动到烧写模式,然后用update.zip升级系统
c) 特点
i. 全部更换等于完全重装了系统,用户数据都找不到了,影响很大
ii. 部分更新只替换部分内容,而替换的部分可能和其它部分冲突,造成变慢或无法启动等严重的问题
iii. 无论全部更新或者部分更换,只能更换到文件层(即使用adb shell时用ls可看到的文件)无法替换jar包或apk包内部的内容
iv. 网上可下载的皮肤包各式各样,有大有小,没有一定的规范,基于各个版本,需要一个一个试
v. 安装后无法恢复,所以试验前一定要使用nandroid备份原分区
d) 皮肤下载
i. http://forum.xda-developers.com/forumdisplay.php?f=450
ii. http://android-themes.net其中的Blue_Star_5_ADP1.zip,cm4.281-theme-update.zip,LBP-0[1].4.5.zip,Rex3WixCSDI.zip等
2) 使用metamorph工具
a) 原理
更换jar/apk包中内容
b) 方法
得到root权限,安装metamorph工具(可从market下载的apk包)及其依赖工具,下载皮肤的zip包到sd卡,然后通过metamorph应用程序选择安装
c) 特点
i. metamorph为开源软件,可下载调试其源码
ii. 格式规范,有一些theme可用
iii. 用此方法,不只能换资源,也能改程序,不安全
iv. 需要root权限,不是一般用户可以操作的
v. 不能回退到之前资源,只能通过nandroid备份原分区
vi. 由于可以只替换部分资源,所以换几次后可能出现上一资源残留的问题
vii. 资源包太大或有问题,会影响系统正常使用,甚至无法启动
d) 皮肤下载
http://www.androidin.net/bbs/thread-34043-1-1.html
3. 说明
由于至今android源码中还未提供友好的换肤接口,使得我们只能使用即麻烦又不安全的方法换肤。即使如此,网上还是能下载到大量android皮肤。