1.源码定位

  • 定位头文件
man 函数名

使用场景:在某个.cpp文件中,使用了个函数,但是不知道这个函数到底位于哪个头文件里。可以使用上面的指令定位头文件。

比如定位一个库的mk文件:
grep 'LOCAL_MODULE := sqlite-jdbc' -Inrw --include=*.mk

查找build系统里的变量定义在哪个文件
grep 'BUILD_STATIC_LIBRARY' -Inrw --include=*.mk

  • 定位结构体的定义位置
    grep "struct 结构体名字" -Inrw --include=*.h

2.分析文件

so文件分析

  • 查找文件是否有某个方法

    ```strings libdrv.so | grep functionname```
    还有一种方法,通过IDAPro调试也可以查看。

3.打印日志

  • c或者cpp文件里打印Android日志
    看我这篇博客https://www.jianshu.com/p/08e3eeecaf8e
  • java文件里打印日志
    看我这篇博客https://www.jianshu.com/p/d1525c64cb8f,使用Logger.java而非Log.java。
    libcore模块的Java类可以直接使用Logger.java类,其它模块的Java类mk基本都会依赖这个libcore模块编译的core库,所以也可以直接使用。

当然,也可以使用System.out.println()打印日志。

4.高效的修改源码

将源码粘贴到IDE里修改完了,再粘到源码所在位置替换。注意(包名也要替换

5.怎么记录源码修改记录

分类: 基础

0 条评论

发表回复

您的电子邮箱地址不会被公开。