1google官方给出的体系结构图,在这个图中可以看出android的被分为了四层,最底层是linux核心,android的操作系统都是基于linux核心的,可以看出linux核心里面有显示驱动程序(DisplayDriver)照相机驱动程序(Camera Driver)wifi驱动程序(Wifi Driver)等,linux 提供的是一个操作系统最核心最基础的一些功能。
倒数第二层:
在linux内核之上有LIBRARIES,是一些程序包,这些程序包基本上是有c和c++编写的,里面有比如OpenGL|ES,即3D开发的api,SQLite,即关系型数据库等,这一层还有android运行时环境,这个环境包含Core Libraries,是一个核心包,这个核心包里面包含了我们在java开发当中常见的一些类库,比如I/O类库,除此之外,这个运行时环境还包括了google自己开发的java虚拟机,这个虚拟机是针对手机格外优化过的,所以它的性能啊耗电量啊都能和手机有个很好的匹配
正数第二层:
在LIBRARIES这层之上是APPLICATION FRAMEWORK,即应用程序框架,它提供了手机开发最基本的一些api,这一层的代码都是用java编写的
最顶层:
在这一层之上是APPLICATIONS,程序员开发的应用程序就在这层,就是应用程序层,应用程序层向下调用应用程序框架层,而应用程序框架层向下调用LIBRARIES,以及基于android运行时环境进行运行,最后交给操作系统底层来和应用程序进行交互,
2 android和iphone的一个对比
Android是以java语言为基础的,iphone是以ObjectiveC语言为基础的,
在android平台下,只需花25美元买一个许可证,就可以一直使用这样许可证,在iphone下,你要是想开发应用程序,到iphone market上去销售的话,每年需要付出99美元等
3android工程中相应目录的介绍
(1)在一个android工程中,如上图,src目录里面放置的是编写的源文件,gen目录是eclipse中android的开发插件ADT插件帮我们自动生成的,里面有个文件叫R.java,在assets和res里面都是可以放资源的,但是两者之间的区别就是,放在res中的资源都会自动相应的在R.java中生成独一无二的ID,而放在assets中的资源是不会生成相应ID的,R.java提供了一个访问资源的统一接口
(2)
这个里面是放的不同分辨率的相同图片,分别是高分辨率,低分辨率和中等分辨率,就是一张图片最好在这几个分辨率文件夹中都放一个,以适应不同分辨率的手机
(3)
这个里面放的是布局文件,这个文件的作用就是用来控制activity当中的控件的位置等,
(4)
这个里面放置的应用程序的键值对,这个是为了应用程序的国际化,可以适应不同国家的客户进行使用
2一个应用程序中往往有很多个,那么应用程序刚启动时执行哪个activity呢?
哪个activity中配置了如下属性:就会先启动哪个activity
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
4 Android中四个非常重要的组件
(1) activity 主要负责应用程序当中数据的展示,即界面
(2) Intent activity之间或者整个程序之间的数据的传输
(3) Service 它是不可见的,它在后台运行为应用程序提供一个服务的支持
(4) ContentProvider 主要为应用程序提供数据,是一个提供数据的接口,存储数据,并在应用程序之间共享数据