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

相关文章
|
3天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
5天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
7天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
5天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
6天前
|
存储 XML JSON
探索安卓开发:从新手到专家的旅程
【10月更文挑战第36天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入安卓开发的奥秘。无论你是编程新手,还是希望扩展技能的老手,这里都有适合你的知识宝藏等待发掘。通过实际的代码示例和深入浅出的解释,我们将解锁安卓开发的关键技能,让你能够构建自己的应用程序,甚至贡献于开源社区。准备好了吗?让我们开始吧!
18 2
|
7天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
13天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
27 5
|
12天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
13天前
|
缓存 数据库 Android开发
安卓开发中的性能优化技巧
【10月更文挑战第29天】在移动应用的海洋中,性能是船只能否破浪前行的关键。本文将深入探讨安卓开发中的性能优化策略,从代码层面到系统层面,揭示如何让应用运行得更快、更流畅。我们将以实际案例和最佳实践为灯塔,引领开发者避开性能瓶颈的暗礁。
32 3
|
10天前
|
移动开发 Java Android开发
探索Android与iOS开发的差异性与互联性
【10月更文挑战第32天】在移动开发的大潮中,Android和iOS两大平台各领风骚。本文将深入浅出地探讨这两个平台的开发差异,并通过实际代码示例,展示如何在各自平台上实现相似的功能。我们将从开发环境、编程语言、用户界面设计、性能优化等多个角度进行对比分析,旨在为开发者提供跨平台开发的实用指南。
32 0