搞源码一定会用到的,这个是sdk中自带的google提供的一个操作手机内部资源的工具。具体能使先很多功能,像是抓取log,push/pull一些东西,增加一些service等。有兴趣可以看看这个【android-tips】adb
常用命令汇总(持续更新中)
4-1 android源码结构
这张图已经看得很清楚了,在源码中有三层:linux kernel(c语言和汇编),native函数(c和c++),framework(java)。
linux-kernel我没涉及过,不知道怎么改。。一般的操作主要是集中在native层和framework层。
先上一张源码内部文件的组成图。
4-2 源码文件夹结构
framework层的函数就是在图中的frameworks文件夹中。里面就是平时我们在代码中import的那些包。比如说我们常用的所有view类,都在这里
4-3 view的位置
framework层的大多功能都是从native的函数中来的。只是在framework层做成sdk中可以直接调用的接口,native层函数和framework层函数的桥梁就是jni。
很多做android的人都知道ndk,ndk的功能可以用一句话概括,就是“越过framework层直接调用native函数”。具体的安装和用法可以参见。android图文介绍NDK安装及简单jni demon的实现
hook就是源码钩子,很多人听说过但没有用过。我尝试过搞过一个hook,hook其实就是提取一些源码中没有提供接口的功能。比如说当系统渲染界面的显示的时候,google没有提供方法来得知每个字应该画到哪,我们要想知道每个字的坐标,就要去看它的渲染文件,然后在里面加上自己的方法然后把需要的信息提取出来。
写到最后:对于android系统的理解,我还停留到比较肤浅的水平。不过对于系统再熟,也只是了解一个系统,最重要的是明白它的结构的原理,知道它处理数据的算法,说白了就是设计模式和算法。写给曾经那个停留在app层拿着android入门摆弄各种控件的自己,you are still too naive too simple!
android告别篇-对于源码我的一些看法,布布扣,bubuko.com
原文:http://blog.csdn.net/buptgshengod/article/details/22809185