方法:
修改状态栏字体颜色需要修改system\framework目录下的framework-res.apk和services.jar
framework-res.apk的修改比较简单,大家可以到网上查教程。
修改services.jar必须反编译classes.dex,需要用到smali
services.jar的修改(日期和时间)
1、很多ROM的services.jar都有odex文件,这要用到smali和baksmali 反编译
2、smali和baksmali需要Java平台支持,下面是smali/baksmali和Java平台的下载地址
smali/baksmali:
http://code.google.com/p/smali/
java平台:
http://down.qiannao.com/space/file/mengxiaosi/share/2010/3/29/jdk-002d6u10-002drc2-002dbin-002db32-002dwindows-002di586-002dp-002d12_sep_2008.exe/.page
3、把下载好是smali和baksmali放到我的文档里,自己建个目录(不要中文,我的叫smali)
把services.jar和services.odex放进smali的目录
4、运行cmd,此时应该默认就在我的文档里(输入DIR可以看到当前目录的文件)
用cd命令进入smail(cd smali)
5、反编译services.odex,指令是
java -jar baksmali-1.2.4.jar -x services.odex
会提示缺少 core.odex,我们要把system\framework目录下的core.odex复制过来
总共需要的文件是 core.odex ext.odex framework.odex android.policy.odex
(其他apk的DeOdex都是这样,要一个一个文件的复制过来,所以DeOdex很麻烦的)
6、反编译后在smali文件夹里有个out文件夹,接下来我们要修改这个文件夹里的文件,
这里我以cliq为例子
A、时间的修改:
打开classes\com\android\server\status\ 编辑statusbaricon.smali(记事本打开)
查找 Landroid/widget/TextView;->setTextColor(I)V cliq这一列是在.line 47
.line 47
const/high16 v6, -0x100
invoke-virtual {v4, v6}, Landroid/widget/TextView;->setTextColor(I)V
.line 47下的 const/high16 v6, -0x100 就是字体的代码,这里的是黑色
改成你要的然后保存(白色的代码是const v6, -0x1)
其中的v6是字体大小,/high16和-0x100估计是色域代码,这些我也不太清楚,
B、日期的修改:
打开classes\com\android\server\status\,编辑StatusBarService.smali(记事本打开)
查找 Lcom/android/server/status/StatusBarService;->mDateView:Lcom/android/server/status/DateView
可能会找到几个,通常第一个就是,cliq这一列是在.line 272
.line 272
const v7, 0x1020059
invoke-virtual {v5, v7}, Lcom/android/server/status/StatusBarView;->findViewById(I)Landroid/view/View;
move-result-object v7
check-cast v7, Lcom/android/server/status/DateView;
const/high16 v8, -0x100
invoke-virtual {v7, v8}, Landroid/widget/TextView;->setTextColor(I)V
iput-object v7, p0, Lcom/android/server/status/StatusBarService;->mDateView:Lcom/android/server/status/DateView;
其中的const/high16 v8, -0x100 就是字体代码,这里的是黑色,修改方法和上面的一样,改好保存
7、到这里我们的修改就完成了,接下来要把文件重新编译成classes.dex,代码如下
java -Xmx512M -jar smali-1.2.4.jar out -o classes.dex
把得到的classes.dex放进services.jar里,修改完毕,放回ROM里
补完: 对于已经DeOdex的services.jar,我们只要把services.jar里的classes.dex提取出来,和services.odex是一样的!