#1,Android 体系结构 2000字简介 入门Android(Studio)开发

简介: #1,Android 体系结构 2000字简介 入门Android(Studio)开发
+关注继续查看

Android 体系结构:

Android系统采用分层架构,由高到低分为4层,依次是应用程序层(Applications)、应用程序框架层(Application Framework)、核心类库(Libraries)和Linux内核(Linux Kernel)。

image

应用程序层

应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如自带的联系人程序、短信程序,或者从Google Play上下载的小游戏等都属于应用程序层。

应用程序框架层

应用程序框架层主要提供了构建应用程序时用到的各种API。Android自带的一些核心应用就是使用这些API完成的,例如视图(Views)、活动管理器(Activity Manager)、通知管理器(Notification Manager)等。开发者也可以通过这些API来构建自己的应用程序。

核心类库

核心类库中包含了系统库及Android运行环境。系统库这一层主要是通过C/C++库来为Android系统提供主要的特性支持,如OpenGL / EL库提供了 3D 绘图的支持,Webkit库提供了浏览器内核的支持。

Android 运行时库(Android Runtime )主要提供了一些核心库,能够允许开发者使用Java语言来编写 Android 应 用 ,另外Android运行时库中还包括了Dalvik虚拟机.它使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。相较于Java城拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能等做了优化处理。

Linux内核

Android系统主要基「 Linux内核开发,Linux内核层为Android设备的各种硬件提供「底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、电源管理驱动等。

Dalvik 虚拟机

在Android运行时库中包括了 Dalvik虚拟机。Dalvik是Google

公司自已设计的用于Android平台的虚拟机,它可以简单地完成进程隔离和线程管理 ,并且 可以提高内存的使用效率,每一个Android应用程序在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解析下得以执行。

很多人都认为Dalvik虚拟机是一个Java虚拟机 .因为Android开发的编程语言恰恰是

Java语言 .但是这种说法并不准确Dalvik虚拟机并不是按照Java虚拟机的规范来实现的 . 两者不兼容,而且也有很多不同之处下面通过一个图进行对比说明。

image

Java虚拟机和Dalvik虚拟机主要有两大区别:一是它们编译后的文件不同;二是它们基于的架构不同。具体如下:

1.编译后的文件不同

Java虚拟机运行的是.class字节码文件,而Dalvik虚拟机运行的则是其专有的.dex文件。

在Java程序中Java类会被翻译成一个或者多个字节码文件 (.class )然后打包到.jar文件,之后Java虚拟机会从相应的.class文件和.jar文件中获取相应的字节码。Android程序虽然也是使用Java语言进行编程,但是在翻译成.class文件后,还会通过工具将所有的.class文件转换成一个.dex文件,然后Dalvik虚拟机从其中读取指令和数据,最后的.odex是为了在运行过程中进一步提高性能面对.dex文件进行的进一步优化,能加快软件的加载速度和开启速度。

基于的架构不同

Java虚拟机是基于栈的架构,栈是一个连续的内存空间,取出和存入的速度比较慢;而Dalvik是基于寄存器的架构,寄存器是CPU上的一块缓存,寄存器的存取速度要比从内存中存取的速度快很多,这样就可以根据硬件最大限度地优化设备,更适合移动设备的使用。

Android系统下的Dalvik虚拟机默认给每一个应用程序最多分配16MB内存,如果Android加载的资源超过这个值,就会报出OutOfMemoryError异常,因此一定要注意这个问题。

ART模式

ART模式英文全称为Android Runtime,是谷歌Android 4.4 系统新增的一种应用运行模式。与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验。

ART模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。

相关文章
|
6月前
|
移动开发 缓存 JavaScript
Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App
Vue3.0入门 + Vant3.0移动端实践(三)使用Cordova打包Android App
|
7月前
|
Web App开发 编解码 人工智能
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU 系统-Android
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU 系统
158 0
|
8月前
|
Ubuntu Java 机器人
Android AOSP入门之环境搭建
最近在做移动机器人项目,要给机器人做一个头台,搭载Android操作系统,要为系统做一些定制。在 好多年前,还是Android 5.0以下系统的时候做游戏画面采集做个AOSP的编译,那个时候电脑配置查,网络也差,搭建一次环境特别费劲。编译完还没有现成的设备可以给刷,一直也没有真正的framework和内核、驱动层的开发经验,现在有了实际的需求了,硬着头皮开搞。
410 0
|
12月前
|
vr&ar Android开发 C++
Android OpenGL入门
Android OpenGL入门
Android OpenGL入门
|
XML 前端开发 Android开发
Android自定义View-入门(明白自定义View和自定义ViewGroup)
为什么要自定义View? 主要是Andorid系统内置的View 无法实现我们的 需求,我们需要针对我们的业务需求定制我们想要的 View.
103 0
Android自定义View-入门(明白自定义View和自定义ViewGroup)
|
XML 前端开发 程序员
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
138 0
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
|
人机交互 Android开发
Android studio入门安装配置教程(中文版)
Android studio入门安装配置教程(中文版)
Android studio入门安装配置教程(中文版)
|
Android开发 Windows
|
Java Shell 测试技术
Android测试工具 UIAutomator入门与介绍(下)
  UI Automator 测试工具定义以及用途
|
Java 测试技术 API
Android测试工具 UIAutomator入门与介绍(上)
  UI Automator 测试工具定义以及用途
Android测试工具 UIAutomator入门与介绍(上)
相关产品
云迁移中心
推荐文章
更多