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

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

Android 体系结构:

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

应用程序层

应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如自带的联系人程序、短信程序,或者从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虚拟机的规范来实现的 . 两者不兼容,而且也有很多不同之处下面通过一个图进行对比说明。

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模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。

相关文章
|
7天前
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
13 1
|
9天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
32 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
10天前
|
Unix Linux Shell
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境下交叉编译Android所需的FFmpeg so库,首先下载`android-ndk-r21e`,然后解压。接着,上传FFmpeg及相关库(如x264、freetype、lame)源码,修改相关sh文件,将`SYSTEM=windows-x86_64`改为`SYSTEM=linux-x86_64`并删除回车符。对x264的configure文件进行修改,然后编译x264。同样编译其他第三方库。设置环境变量`PKG_CONFIG_PATH`,最后在FFmpeg源码目录执行配置、编译和安装命令,生成的so文件复制到App工程指定目录。
43 9
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
|
1天前
|
机器学习/深度学习 安全 数据处理
构建未来:基于Android的智能家居控制系统开发
【4月更文挑战第29天】 随着物联网技术的蓬勃发展,智能家居已成为现代技术革新的重要领域。本文将深入探讨基于Android平台的智能家居控制系统的设计和实现,旨在提供一种用户友好、高度集成且功能丰富的解决方案。通过利用Android设备的广泛普及和其强大的处理能力,结合最新的无线通讯技术和人工智能算法,我们旨在打造一个可靠、易用且具有高度可定制性的智能家居控制环境。文中不仅详细阐述了系统架构、关键技术选型以及界面设计,还对可能遇到的安全挑战进行了分析,并提出了相应的解决策略。
|
6天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
8天前
|
传感器 Java 开发工具
[NDK/JNI系列03] Android Studio集成NDK开发环境
[NDK/JNI系列03] Android Studio集成NDK开发环境
14 0
|
15天前
|
Android开发
【Android Studio】缺少输入自动补充(已解决)
【Android Studio】缺少输入自动补充(已解决)
|
17天前
|
XML 存储 Java
安卓应用开发入门:构建您的第一个移动应用
【4月更文挑战第13天】本文引导读者入门安卓应用开发,首先介绍设置开发环境,包括安装JDK和Android Studio。接着,通过Android Studio创建第一个项目,解析项目结构,重点讲解`AndroidManifest.xml`和`activity_main.xml`。然后,设计一个显示"Hello World!"的布局,并在`MainActivity.java`中编写相应逻辑。最后,运行并调试应用,鼓励读者继续学习安卓开发的更多知识,提升技能。
|
23天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
26天前
|
监控 算法 Android开发
安卓应用开发:打造高效启动流程
【4月更文挑战第5天】 在移动应用的世界中,用户的第一印象至关重要。特别是对于安卓应用而言,启动时间是用户体验的关键指标之一。本文将深入探讨如何优化安卓应用的启动流程,从而减少启动时间,提升用户满意度。我们将从分析应用启动流程的各个阶段入手,提出一系列实用的技术策略,包括代码层面的优化、资源加载的管理以及异步初始化等,帮助开发者构建快速响应的安卓应用。