你的位置:首页 > 操作系统

[操作系统]Apktool(4)——实战篇:修改小米桌面


准备工作:

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文件夹。

image

4.修改桌面

尽管已经反编译了MiuiHome.apk,但想要修改桌面,必须找到直接关系到小米桌面的配置文件。那么桌面的配置文件在哪里呢?

我在Apktool(2)中介绍了res目录则是程序中所有的资源文件,显然,我们需要在该目录下寻找。

小米手机首次启动,会加载哪个配置文件呢?结论是:res/

image

该目录下有这么多配置文件,怎么知道启动加载的是该文件呢?具体可参考:http://forum.xda-developers.com/showpost.php?p=40167735

由此可得出结论:如果我们不希望手机启动时加载该文件也可以修改res/values/integers.

image

(未验证,读者可自行验证)

知道关系到小米桌面的关键配置文件,那我们就可以通过修改该配置文件来修改桌面了。(该配置文件部分如下)

image

#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.

image

因此,我们可以在这里修改文件夹名字,或者增加自定义的文件名。

2)怎么添加程序apk到文件夹?

image

launcher:container为文件夹的id,默认从1开始编号。

通过观察launcher:x和launcher:y,我们发现y是固定不变,x从0开始编号,这样,添加进文件夹的apk快捷方式就会从左到右,从上到下依次排列。

#4.修改hotseat

hostseat为如图所示apk

image

查看配置文件:

image

可以看到launcher:container定义为-101,launcher:y固定不变,launcher:x从0开始编号。这样也可以对其进行相应的修改。

5.编译

至此,我们通过修改配置文件修改小米的桌面了。

最后,我们必须反编译修改后的文件,生成修改后的apk。

运行:apktool b -cf -t xiaomi MiuiHome -o out\MiuiHome.apk

image

这样,我们就编译生成了修改后的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