前言
作为一个有半年余Android Developing折腾经验的Android Developer(为什么不说“开发经验”呢?因为我仔细想了想,我还没有独立地做出一个完善美观且有使用价值的应用。),要系统地学习安卓平台的基本开发技能,那么第一步,了解并熟识Android的基本世界观,应该就是十分必要的了。以前这方面的知识体系不成系统,比较破碎零散,故借此文稍作整理。
我认为在进入任何一个比较复杂的知识技能体系之前,都需要先用基本世界观来热热身。对于高中物理而言,初中数学物理知识就形成了基本世界观;对于近体诗写作而言,平水韵和对仗的修辞手法就是基本世界观;而对于Android,基本世界观则包括了Android系统的简介、四大组件的含义、以及其他一些基本的开发逻辑。
Android系统
历史与现状
Android(Android System),是一个基于Linux内核的开源移动操作系统,由Google旗下的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发,主要设计用于触屏移动设备,如智能手机和平板电脑等。Android 1.0 beta于2007年11月5日问世,至于世界上第一部真正意义上使用Android操作系统的设备,则是2008年10月22日发布的HTC Dream。Android系统采用Linux宏内核,系统核心语言是C和C++,主要的编程开发语言是Java。截止2016年初,Android的最新版本是Android 6.0“Marshmallow”(棉花糖)。
系统与系统架构
Android系统执行于Linux kernel之上,但并不是GNU/Linux。实际上,Android大都并不支持GNU/Linux的一些功能。除了基于Linux的核心之外,则是中介层、数据库元和用C/C++编写的API以及应用程序框架。Android的系统架构如下图所示——
可见,系统架构大致分为四层:Linux内核层,核心库层(以及运行环境),应用框架层和应用层。
Linux内核层比较底层,通常也是对Developer隐藏的。
Android Runtime与Libraries层:
Android的应用程序通常以Java为基础编写,运行程序时,应用程序的代码会被即时转变为Dalvik dex-code(Dalvik Executable),然后Android操作系统通过使用即时编译的Dalvik虚拟机来将其运行。也就是说,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例(这也保证了如果一个Android应用程序进程意外中止,将不会影响到其它应用程序进程的正常运行。)。Dalvik Virtual Machine在某种角度上很像是JVM(至少我感觉如此),但实际上它们还是有不小的差异的。JVM是堆栈机器(基于Stack),但Dalvik VM是寄存器架构的机器。JVM执行class格式文件,而Dalvik VM执行dex格式文件。 Dalvik VM会通过执行dex码文件来完成堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能,这些也和JVM很像。
Android系统还会通过一些C/C++库来