google了张图,android原来是个大杂包啊!
打眼一看,分了5大块啊! 从应用程序到底层操作系统内核,真够杂的!!!
仔细一看,第一层直接撇了! 拿个安卓手机开机后就能找到。
如此一来:
这下看着省心一点了!
再看最下面Linux Kernel, 这么高深的东西,看不了啊! 再说了操作系统应该都差不多,一堆的驱动包! 干掉!
这回基本上都是干货了! 应该是需要研究的了!
再继续看,上图中左下角那一堆,外观管理器,多媒体框架,SQLite(竟然集成了数据库?),OpenGL ES(老听搞游戏的人说但是不了解!),FreeType位图,矢量字体渲染,WebKit(据说很牛的浏览器内核),SGL(碰到GL 就范晕),SSL(我猜是安全协议之类的)至于最不起眼的那个libc,据说C/C++大牛可是对他们情有独钟,能用他们搞搞Linux内核,动动驱动啥的,可对我来说天方夜谭啊!!!
据说这些都是用C/C++整的类库API,向来玩不了这两种语言,敬而远之吧!
所以,我再砍!!!
虽然图撕的难看一点,不过总算把没用的给去掉了,可以静心研究这张残图了,希望能从这张图找到通往宝藏的神秘之路!!!!
只有两大块了,应用程序框架+应用程序运行环境!
现在从头想想,原来Android就是一个杂包啊,里面有操作系统,操作系统上附带了一些移动终端常用的应用软件,如果你是高手,估计你可以不用这些软件,自己写了替换他们。
当然和java一样,他们优化了一个虚拟机,Java的JVM瘦身了,因为移动终端没有计算机个大啊,主要是优化了内存使用到最小,就变成了Dalvik 虚拟机,不知道为什么叫这个名字? 这个小虚拟机可以实例化? 可以同时运行多个?
Java 虚拟机JVM,只是听说过,没用过,也不知道啥样? JVM有可执行文件吗?
Dalvik说它有,而且有个标志性的后缀.pex, 说他能运行java写的类,但是需要通过java的编译器编译,用dx转换。 不明白!
不管怎样,它还是不能脱离Linux内核的支持,比如底层的内存管理,线程管理之类的。
它是做什么的呢?
它的上面还有个core Libraries, 跟应用程序框架里面的组件一个颜色,说明都是Java语言开发的,当然,人家说了那个Dalvik是个可执行的文件,是什么语言,不关我的事了。
每个应用程序都有一个自己的进程和相应的Dalvik VM实例为之服务!!!!--- 这话对吗?
Dalvik可以随便实例化? 得进一步研究!
目前先理解为一个Android的应用程序会有一个单独的进程和一个专门为他创建的Dalvik VM实例为之服务。
Core libraries 核心类库,在android 运行时环境中,介绍说它就是刚才撕掉的Libraries 在android 运行环境中被java封装的接口类库。
再看应用程序框架里面,我靠7个当官的啊!!!还有一个服务商,View成了独立系统了!!!
这7个Manager们,不用说都是搞管理的! 提供商Provider,这是搞服务的! View独立了吗? 自成体系了!
据说这是Android为了让我们developer开发application时有个标准,特意封装的组件单位。
我们developer编写application难道都靠这些官员和提供商吗,对了还有个自称系统的家伙!!!
看看曾经坐在他们上面的Contacts ,Phone,Browser ... 都是application, 估计应该是这样了!
他们都是蓝色的,应该都是java写的, 据说android已经基本覆盖了java的所有核心类库,希望不是吹的。
啊呀,不看了,太晚了,睡觉!