合聚咖

合聚咖

如何学习和理解Android系统

admin

我以前是做嵌入式系统开发的,对于平台比较熟,所以我的学习方向是从下往上进行学习,有相同工作经历者可以效仿一下吧:)个人认为其实就是三大块,分为移植-框架-应用

1、android系统移植其实这一块工作主要集成在androidlinuxkernel的驱动代码编写及android系统启动调试过程。对于android-HAL移植代码编写,其实android系统需要移植的模块较少(最精简的系统启动),只需要实现libgralloc模块,这块就是显示及显存分配的代码以及HDMI的启动高清输出。需要熟练掌握的知识是linux驱动及android系统的启动过程会干哪些事情。以前写过相关的linuxkernel及android完整的启动流程。只要熟悉清楚这些原理,就是解决启动过程中的问题,基本上移植android系统不会有太大的问题,只要启动了原始的android系统后面就是完善及优化系统了。深入研究过三个平台代码(海思,ST及博通)的android代码与原始android系统代码,基本上都是这么做的。这里推荐---移植与调试,可以对android的外围设备及相关移植内部有一定的了解,碰到问题多问问google,可能其它朋友也碰到过,当然也可以找你一起讨论解决。

2、框架层代码学习这块代码需要熟悉几个android的几个重要概念:Binder(IPC通讯),Service服务,Zygote等等紧接着就是研究大的模块代码,如,,Media(这块还一直没有时间看,很遗憾)等,下一个计划就是研究media媒体播放这块,以前做过本地播放应该会减小很多的学习时间,知识的本质是相通的。浏览器及虚拟机这块也是个大头,目前开发没怎么用到,所以也没有去怎么接触和了解,说不上好的建议这里推荐系统篇,写的特好,更多的内容见博客,网上很多牛人呀。

3、JAVA应用程序这一块代码的编写,最好的教材就是androidSDK,这些api有详细的介绍及用法,与msdn媲美。