目录
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里修改完了,再粘到源码所在位置替换。注意(包名也要替换)
0 条评论