怎么修改通知栏颜色

2025-05-09 14:13:30
推荐回答(1个)
回答1:

  方法:
  修改状态栏字体颜色需要修改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是一样的!