一、Android的体系结构
1.1 体系结构
从下往上进行层概述:
Linux内核层:
该层主要的作用是:对系统进行管理例如:驱动管理,电源管理,进程管理,安全管理,内存管理等等。
硬件抽象层:
该层主要的作用是:对Linux底层实现进行屏蔽,向上提供接口,该层不开源,主要是为了维护商家的利益,但是会影响系统的性能
Android对硬件的支持分为两层:一层是用户空间,另一层是内核空间,
用户空间存放的是:硬件抽象层,该层提供具体的访问细节
内核空间存放的是:Linux驱动程序,该层只是提供简单的硬件访问逻辑(内核驱动程序具有硬件的基本信息)
原生库与Android运行时:
该层是主要的作用是:原生库:主要是基于C、C++一些原生的组件,例如:Webkit浏览器引擎,SSL互联网安全协议等。Android运行时包含两个方面:Java核心库与DVM两者共同组成Android的运行环境。
应用框架层:该层主要的作用是:提供了Android开发的API,开发人员可以根据这些API进行相应的开发,它本身也是用Java语言实现的。
该层有:activityManager(活动管理),windowManager,ContentProvider,ViewSystem,NotificationManager(消息管理)包管理..
应用层:
该层是主要作用是:根据应用框提供的API进行第三方开发,其中也包含一些自带的应用例如:图片管理,通讯录等等
二、android-sdk目录结构
2.1 结构分层:
1 add-ons:第三方的库,如摄像头驱动
2 build-tools:构建工具,包含的主要工具为:
aapt.exe(把包转换成.apk文件)
dx.bat(把class字节码文件转换成classes.dex文件)
3 platforems:该目录中包含了Android系统的版本,版本中包含了数据和系统镜像
4 platforems-tools:该目录中包含有adb.exe(android debug birge)该工具的主要的作用是:Linux和window进行交流的桥梁。
5 System-image:该目录中包含了Android模拟器创建的镜像
6.tools:该目录中包含的工具有:ddms.exe(DVM调试监控服务)
sqlite3.exe(sqlite3数据库启动器)及模拟器启动器等等
三、JVM和DVM的共同点和不同点
共同点:执行的都是字节码文件
不同点:
程序的结构不同:JVM执行的是:.class文件
DVM执行的是:.dex文件
体系架构不同:JVM执行基于堆栈(内存)
DVM执行基于寄存器(CPU)
四、Android应用程序结构介绍
Android应用 应用由四大组件构成分别为:Activity,service,BroadcastReceiver,ContentProvider;每一个组件都是一个独立的模块,每一个组件有着不同的入口,Android框架通过这些入口进入到应用中,组件在AndroidManifest.xml文件中进行注册,从而达到不同组件间的松耦合,从而定义应用中的整体功能。
五、Android应用运行过程
1.编译
java(.class)多个-------dx.ba工具------>classes.dex(一个)----aapt.exe工具------>.apk文件--->>进行签名(single签名)默认是debug签名
2.安装
1.将.apk 文件安装到模拟器或者是真机中,位置在data/data 中
2.在Androidmanifest.xml文件中获取响应的组件,权限,包名等等
3.在data/data文件中创建一个文件夹,包名即是文件夹的名字
4.把应用程序的信息写入到data/system/package.xml文件中,以实现对应用组件的注册
3.启动
1.Android应用:Android本身是一个多用户的Linux系统,一旦应用安装成功,android框架会给应用分配一个UserId来标识,根据该UserId来设置该文件的访问权限;当用户通过应用程序列表或者程序导航进入到应用中,此刻会开启一个虚拟器,创建一个进程,创建一个线程(UI),在启动导航器进入到组件中,进入到该组件的生命周期中,从而启动该应用程序.
六、简述activity,window,View间的关系
Activity:
activity:四大组件之一,用来展示一个与用户交互的界面
activity是如何进行与用户交互的?
activity是通过内置的window对象进行窗口的展示,该activity活动展示通过View来捕获相应的事件,通过windowManagerService来传递传递消息(用户所用的组件,及组件的类型),在根据该消息Android框架回调相应的监听方法,从而实现了与用户的交互.
Window:
它表示的是一个窗口,是activity的主窗口,每一个window都有一个View,作为该窗口的*视图,一般称为装饰视图,window通过setContentView将布局中的文件添加到装饰视图中,从而将布局展示出来.
View:
视图:View是所有的组件的基类,它在屏幕上显示的是一个基类,View的主要的作用是:1,负责空间图形的渲染(显示)2,事件的捕获
系统提供了大量的标准的接口组件
也可以直接调用View,不过需要继承View实现组件的自定义.
三者的关系是:当activity启动时,activity进行与交互,此时就会通过内置的window对象进行窗口的展示,window对象调用View,作为该窗口的*视图,通过setContentView将布局中的组件添加到*视图中去,便实现了与用户的交互。