http://blog.sina.com.cn/s/blog_49f62c350100qzgz.html
http://blog.csdn.net/banketree/article/details/24718899
1.android SDK--用于开发应用层的软件开发包(熟悉了,主要是能快速开发APP)
2.framework--应用程序框架(熟悉了,主要有助于开发出更加高质量的应用,用于应用优化)
3.libraries--底层库 (熟悉了,主要用于做底层开发)
4.linux kenerl--linux内核
5 性能,内存优化(运行速度,占用空间);
熟悉SDK=熟悉FrameWork层提供的接口+理解原理是什么(常常要结合类图和模式来看,记忆更加深刻,更容易理解)。
要看懂Android系统的源代码,各方面的知识还是需要了解一下的,但是不需要熟悉。
语言方面,C/C++和Java要掌握。
基础知道方面,Linux内核的各种机制要了解一下。
Android系统方面,Binder进程间通信机制和匿名共享内存机制,基础中的基础,要掌握。
1. sdk
1.1 ActivityManager
理解关键点:1.代理模式
2.真正动作的执行为Stub类ActivityManagerService,ActivityManagerService对象只有一个并存在于system_process进程中;
而ActivityManager存在于用户进程中
3.实现跨进程的对象访问:Binder实现跨进程通信(Binder的实现相当复杂,这里目的在于理解调用过程即可)
4ActivityManager的工作流程
参考资料:http://blog.csdn.net/caowenbin/article/details/6036726
http://blog.csdn.net/stonecao/article/details/6579710
http://blog.csdn.net/xieqibao/article/details/6570080
其他:1.通过日志系统源代码分析,可以理解Android应用程序框架调用过程;理解日志系统。
http://blog.csdn.net/luoshengyang/article/details/6598703;
2.我们平时对XxxxManager(PackageManager)的调用,最终是的在XxxManagerServer.java(PackageManagerService.java)中实现的
将这个PackageManagerService注册到SystemServer中,就可以被App调用了。一般上,某在service的上一层为manager层,至于
至于这个结构图中的manager和实际中的service是否一一对应,可以参考:http://blog.csdn.net/ccwwff/article/details/5766546
2.2 PackageManager
原理如ActivityManager,
类图请看:http://blog.csdn.net/stonecao/article/details/6591454
自己归纳了一下:
SDK中声明抽象类PackageManager
FrameWork中有一个实现类ContextImpl.java,在ContextImpl.java有一个内部静态类叫
ApplicationPackageManager,实现了抽象类PackageManager的所有方法
(通过其里面包装的IPackageManager.Stub.Proxy extends IPackageManager 对象代理执行相关操作,这是一个aidl接口,也就是说肯定对应某一个service,来进行远程调用)
static final class ApplicationPackageManager extends PackageManager {}
PackageManagerService就是对IPackageManager的实现
2.3 .WindowManager
接口认识:http://www.cnblogs.com/over140/archive/2011/01/14/1935202.html
2.4Content Providers
Content Provider在应用之间数据共享的原理
http://blog.csdn.net/luoshengyang/article/details/6967204
大概了解Content Providers的接口
http://blog.csdn.net/stonecao/article/details/6439473
2.5NotificationManager
接口认识:http://www.cnblogs.com/over140/archive/2012/01/09/2316809.html
2.6telephonymanager
接口认识:http://www.cnblogs.com/linjiqin/archive/2011/02/26/1965682.html
2.7ResourceManager
接口认识:http://0537wangjin.blog.163.com/blog/static/24379549201471441157522/
http://blog.csdn.net/linxcool/article/details/9056841
2.8LoacationManager
接口认识:http://www.cs.cmu.edu/~srini/15-446/android/android-sdk-linux_x86-1.0_r2/docs/reference/android/location/LocationManager.html
5 性能调优
http://www.trinea.cn/android/android-traceview/