Android——aosp 项目framework层修改

需求1、在系统启动时候输出自己的log

  根据系统启动流程图得知,Android系统会在SystemServer.java中启动

(aosppy2) aosp@ubuntu:~/android/android5.1$ godir SystemServer.java
(aosppy2) aosp@ubuntu:~/android/android5.1/frameworks/base/services/java/com/android/server$ ls
SystemServer.java
sudo gedit SystemServer.java 
#修改完成后,mm编译当前的模块
mm
 

 修改内容:

 

   通过adb logcat 命令抓取日志,-b 参数标识从系统缓冲区抓取,-s 标识 过滤关键字

(base) aosp@ubuntu:~$ adb logcat -b system -s 'swb'
I/swb     ( 3118): Android system server boot do something !
I/swb     ( 3118): Android system server boot do something !

 

 

需求2、对指定的日志截取修改

  1、找到Log.java所在的位置

(aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/Calculator$ godir Log.java
#输出多个含有Log.java的位置,找到framework层的进行修改
[130] ./frameworks/base/core/java/android/util

Select one: 130

 

  2、修改log.java的wtf()方法

 public static int wtf(String tag, String msg) {
        if("swb".equals(tag)){
            msg = "i handle swb this log..............................";
        }
        return wtf(LOG_ID_MAIN, tag, msg, null, false, false);
    }

 

  修改完成后进行编译,push到当前的模拟器上,进入ADB ,“stop;start” 进行重新启动Android系统

(aosppy2) aosp@ubuntu:~/android/android5.1/frameworks/base/core/java/android/util$ adb push $(gettop)/out/target/product/generic_x86/system/framework/framework.jar /system/framework
failed to copy '/home/aosp/android/android5.1/out/target/product/generic_x86/system/framework/framework.jar' to '/system/framework/framework.jar': Read-only file system
(aosppy2) aosp@ubuntu:~/android/android5.1/frameworks/base/core/java/android/util$ adb remount
remount succeeded
(aosppy2) aosp@ubuntu:~/android/android5.1/frameworks/base/core/java/android/util$ adb push $(gettop)/out/target/product/generic_x86/system/framework/framework.jar /system/framework

  (aosppy2) aosp@ubuntu:~/android/android5.1/frameworks/base/core/java/android/util$ adb shell
  root@generic_x86:/ # stop;start  


   3、在任意一个APP里面增加 Log.wtf()调用,这里方便对比,wtf方法中我们做了处理而普通的Log.d()方法未处理

        Log.d("swb","on calculator is start ~~~~~~~~~~~~~~~~~~~~~~~~");
        Log.wtf("swb","on calculator is start ~~~~~~~~~~~~~~~~~~~~~~~~"); 

   adb logcat 查看修改的日志

(base) aosp@ubuntu:~$ adb logcat -s 'swb'
--------- beginning of main
--------- beginning of system
I/swb ( 1224): Android system server boot ---------------------------------------------------------------------------------------------------------------------->do something !
I/swb ( 1224): Android system server boot ---------------------------------------------------------------------------------------------------------------------->do something !
D/swb ( 2001): on calculator is start ~~~~~~~~~~~~~~~~~~~~~~~~
F/swb ( 2001): i handle swb this log..............................

 


    我这里在计算器的启动类中调用了代码,运行模拟器,抓取日志

  

应用层——>framework层——>JNI层——>natvice层修改生效

 

posted @ 2021-07-23 10:07  迷~途  阅读(873)  评论(0编辑  收藏  举报