如何学习和理解Android系统
来源:互联网 发布:微信赛车源码 编辑:程序博客网 时间:2024/06/09 17:20
http://blog.csdn.net/andyhuabing/article/details/7604959
受朋友之托,由于他是业余进行学习,需要我帮他推荐几本书及学习方法,我在这里简要的谈谈我学习android之路吧。
我以前是做嵌入式系统开发的,对于平台比较熟,所以我的学习方向是从下往上进行学习,有相同工作经历者可以效仿一下吧:)
个人认为其实就是三大块,分为移植-框架-应用
1、android系统移植
其实这一块工作主要集成在android linux kernel 的驱动代码编写及android系统启动调试过程 。
对于android-HAL移植代码编写,其实android系统需要移植的模块较少(最精简的系统启动),只需要实现libgralloc模块,这块就是显示及显存分配的代码以及HDMI的启动高清输出。
需要熟练掌握的知识是linux驱动及android系统的启动过程会干哪些事情。以前写过相关的linux kernel及android 完整的启动流程。
只要熟悉清楚这些原理,就是解决启动过程中的问题,基本上移植android系统不会有太大的问题,只要启动了原始的android系统后面就是完善及优化系统了。
深入研究过三个平台代码(海思,ST及博通)的android代码与原始android系统代码,基本上都是这么做的。
这里推荐 <<android 系统级深入开发>> --- 移植与调试 ,可以对android的外围设备及相关移植内部有一定的了解,碰到问题多问问google,可能其它朋友也碰到过,当然也可以找你一起讨论解决。
2、框架层代码学习
这块代码需要熟悉几个android的几个重要概念: Binder (IPC通讯), Service 服务 ,Zygote 等等
紧接着就是研究大的模块代码,如SurfaceFlinger , AudioFilnger , Media(这块还一直没有时间看,很遗憾) 等,下一个计划就是研究media媒体播放这块,以前做过本地播放应该会减小很多的学习时间,知识的本质是相通的。
浏览器及虚拟机这块也是个大头,目前开发没怎么用到,所以也没有去怎么接触和了解,说不上好的建议
这里推荐 <<深入理解android 卷1>> 系统篇,写的特好,更多的内容见博客,网上很多牛人呀。
3、JAVA应用程序
这一块代码的编写,最好的教材就是 android SDK ,这些api有详细的介绍及用法,与msdn媲美。JAVA代码相对C/C++更简单,使用比较容易,语言是相通的,关键在于想清楚这个事情就是本质
- 如何学习和理解Android系统
- 如何学习和理解Android系统
- 再谈“如何学习和理解Android源码”
- 如何学习Android系统源码
- 如何学习Android系统源码
- 如何学习Android系统源码
- 如何学习Android系统源码
- 如何学习Android系统源码
- 如何系统学习 iOS 开发,理解一些规则和深层次的机制原理?
- Android DialogFragment 学习和理解
- Android 编译系统理解:envsetup.sh学习
- Android菜鸟如何学习Android系统开发?(
- 如何学习和理解三层架构
- 如何学习和理解三层架构
- 如何理解和学习MAYA API
- Android官网教你如何系统学习
- 如何理解人工智能、机器学习和深度学习
- 《机器学习系统设计》之数据理解和提炼
- 第五次课堂作业
- 开发者如何提升和推销自己
- HTTP必须知道的几种状态码
- hdu 1061 Rightmost Digit
- object c内存管理总结(关东升老师视频笔记)
- 如何学习和理解Android系统
- 后台文本编辑器CkEditor
- Duilib中CEventSource及CDelegate(事件委托)的简单分析
- POJ 2449 Remmarguts' Date k短路
- Nginx安装配置及伪静态配置
- How To Install ATI Catalyst FGLRX In Ubuntu
- [Android]将应用崩溃信息汇报给开发者并重新启动应用
- window.onload() 与 $().ready 的区别
- 编程之美2013初赛——竞价