准备工作:
1.下载对应手机型号线刷Rom包,进入小米官网Rom下载频道
2.解压下载下来的Rom包,并用Rom助手提取出system.img中的文件内容。这方面的文章很多,请参考Rom助手如何提取IMG文件
3.找到跟小米桌面相关的apk——/system/priv-app/MiuiHome.apk(5.0及以上系统是在MiuiHome文件夹下的MiuiHome.apk)
实战篇:
1.尝试反编译MiuiHome.apk,具体可参考:Apktool(3)
2.步骤1会提示需要依赖的framework文件,这里依赖文件是/system/app/miui.apk
运行:apktool if miui.apk –t xiaomi
该命令只需执行一次,以后再次反编译时会到默认路径下去load依赖文件。其中-t参数是给依赖文件加标识。
3.再次反编译MiuiHome.apk,运行:apktool d –cf MiuiHome.apk –t xiaomi
则会得到MiuiHome文件夹。
4.修改桌面
尽管已经反编译了MiuiHome.apk,但想要修改桌面,必须找到直接关系到小米桌面的配置文件。那么桌面的配置文件在哪里呢?
我在Apktool(2)中介绍了res目录则是程序中所有的资源文件,显然,我们需要在该目录下寻找。
小米手机首次启动,会加载哪个配置文件呢?结论是:res/xml/default_workspace4x5.xml(4列5行桌面图标)
该目录下有这么多配置文件,怎么知道启动加载的是该文件呢?具体可参考:http://forum.xda-developers.com/showpost.php?p=40167735
由此可得出结论:如果我们不希望手机启动时加载该文件也可以修改res/values/integers.xml文件中的config_cell_count_x和config_cell_count_y
(未验证,读者可自行验证)
知道关系到小米桌面的关键配置文件,那我们就可以通过修改该配置文件来修改桌面了。(该配置文件部分如下)
#1.几个关键词
folder代表文件夹,该默认桌面有两个文件夹。
launcher:title为文件夹的名称,前面com.miui.home:string/是固定的,告知系统从该位置下加载配置文件。
launcher:screen为桌面的屏数,默认第一屏launcher:screen=0,后面以此类推。
launcher:x和launcher:y分别代表列号和行号,默认都是从0开始编号的,如第三行第四列,则launcher:x=3,launcher:y=2。
clock2x4为系统加载的系统时钟。
favorite为程序(apk)的快捷方式。
launcher:className为apk的类名,launcher:packageName为apk的包名。对于获取类名和包名,后续博文会介绍,请关注。
#2.修改favorite
显然,我们可以通过修改launcher:x和launcher:y来调整apk的位置,launcher:screen来修改apk该放在哪一屏。
#3.修改folder文件夹
同样,可以通过修改launcher:x和launcher:y来调整文件夹的位置,launcher:screen来修改文件夹该放在哪一屏。
这里还需要说明的是:
1)怎么定义文件夹的名字?
系统加载的中文名字的配置文件是res\values-zh-rCN\string.xml,可以看到系统默认加载的两个文件夹的名字为“系统工具”和“推荐”。
因此,我们可以在这里修改文件夹名字,或者增加自定义的文件名。
2)怎么添加程序apk到文件夹?
launcher:container为文件夹的id,默认从1开始编号。
通过观察launcher:x和launcher:y,我们发现y是固定不变,x从0开始编号,这样,添加进文件夹的apk快捷方式就会从左到右,从上到下依次排列。
#4.修改hotseat
hostseat为如图所示apk
查看配置文件:
可以看到launcher:container定义为-101,launcher:y固定不变,launcher:x从0开始编号。这样也可以对其进行相应的修改。
5.编译
至此,我们通过修改配置文件修改小米的桌面了。
最后,我们必须反编译修改后的文件,生成修改后的apk。
运行:apktool b -cf -t xiaomi MiuiHome -o out\MiuiHome.apk
这样,我们就编译生成了修改后的apk了。
疑问:1.怎么获取apk类名和包名呢?
2.怎么刷入修改后的apk系统到小米手机呢?
3.通过rom助手解开的system.img,怎么打包生成img文件呢?
请持续关注博客更新。
参考文献:
1.http://forum.xda-developers.com/showpost.php?p=40167735
2.Rom助手如何提取IMG文件:http://www.yzmg.com/news/show-89909.html