Android框架结构
⽂章⽬录
什么是安卓系统
Android 是⼀种基于 Linux 的⾃由及开放源代码的操作系统,主要使⽤于移动设备,如智能⼿机和平板电脑,由 Google公司和开放⼿机联盟领导及开发。尚未有统⼀中⽂名称,中国⼤陆地区较多⼈使⽤“安卓”或“安致”。Android 操作系统最初由Andy Rubin开发,主要⽀持⼿机。2005年8⽉由 Google收购注资。2007年11⽉,Google 与⼀些硬件制造商、软件开发商及电信营运商组建开放⼿机联盟共同研发改良 Android 系统。随后 Google 以 Apache 开源许可证的授权⽅式,发布了 Android 的源代码。第⼀部 Android 智能⼿机发布于2008年10⽉。Android 逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
安卓系统框架
Linux内核设备驱动程序层(Linux Kernel):
Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执⾏底层功能,例如线程和低层内存管理。使⽤Linux 内核可让 Android 利⽤主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
该层主要包括:驱动、内存管理、进程管理、⽹络协议等组件。
硬件抽象层 (HAL) :
硬件抽象层 (HAL) 提供标准界⾯,向更⾼级别的 Java API 框架显⽰设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现⼀个界⾯,例如相机或蓝⽛模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
Android 的 HAL 是能以封闭源码形式提供硬件驱动模块。HAL 的⽬的是为了把 Android framework 与 Linux kernel 隔开,让Android 不⾄过度依赖 Linux kernel,以达成 Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进⾏发展。
原⽣ C/C++ 库:
许多核⼼ Android 系统组件和服务(例如 ART 和 HAL)构建⾃原⽣代码,需要以 C 和 C++ 编写的原⽣库。Android 平台提供 Java 框架 API 以向应⽤显⽰其中部分原⽣库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以⽀持在应⽤中绘制和操作 2D 和 3D 图形。
如果开发的是需要 C 或 C++ 代码的应⽤,可以使⽤ Android NDK 直接从原⽣代码访问某些原⽣平台库。
1. Java不能直接访问硬件,要访问硬件,必须使⽤NDK。NDK是由c/c++语⾔编写的库(.so⽂件),
该层是对应⽤程序框架层提供⽀
持的层。
2. SSL:Secure Sockets Layer安全套接字层
3. libc:C运⾏时库
4. WebKit:负责浏览器⽀持(Chrome和Safari都使⽤该库来⽀持浏览器)
5. FreeType:负责字体⽀持
Android Runtime:
对于运⾏ Android 5.0(API 级别 21)或更⾼版本的设备,每个应⽤都在其⾃⼰的进程中运⾏,并且有其⾃⼰的 Android Runtime (ART) 实例。ART 编写为通过执⾏ DEX ⽂件在低内存设备上运⾏多个虚拟机,DEX ⽂件是⼀种专为 Android 设计的字节码格式,经过优化,使⽤的内存很少。编译⼯具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在 Android 平台上运⾏。
ART 的部分主要功能包括:
预先 (AOT) 和即时 (JIT) 编译
优化的垃圾回收 (GC)
在 Android 9(API 级别 28)及更⾼版本的系统中,⽀持将应⽤软件包中的 Dalvik Executable 格式 (DEX) ⽂件转换为更紧凑的机器代码。
更好的调试⽀持,包括专⽤采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段
在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。如果您的应⽤在 ART 上运⾏效果很好,那么它应该也可在Dalvik 上运⾏,但反过来不⼀定。
Android 还包含⼀套核⼼运⾏时库,可提供 Java API 框架所使⽤的 Java 编程语⾔中的⼤部分功能,包括⼀些 Java 8 语⾔功能。
应⽤程序框架层(Application FrameWork):
该层⼀般都是开发⼈员直接调⽤的API。该层主要由Java语⾔编写。
应⽤程序层(Applications):
由运⾏在Dalvik虚拟机上的app组成。(Dalvik是Google公司为Android专门设计的Java虚拟机,运⾏Java程序的速度⽐JVM更快,以此来克服⼿持设备在内存、处理器速度和功率等⽅⾯上的限制)。该层由Java语⾔编写。
Dalvik是冰岛⼀个⼩镇的名字。Dalvik VM获取⽣成的java类⽂件,将它们组合为⼀个或者多个、Dalvik可执⾏⽂件(.dex)。Dalvik VM的⽬标是到所有可能的⽅式来优化JVM性能、内存及电池寿命。
采⽤Dalvik VM的⼀个结果是,Android中最终的可执⾏程序代码不是java字节码,⽽是.dex⽂件。这意味着⽆法直接执⾏java字节码,必须得到java的类⽂件,然后将它们转换为.dex⽂件。
Java API 框架
您可通过以 Java 语⾔编写的 API 使⽤ Android OS 的整个功能集。这些 API 形成创建 Android 应⽤所需的构建块,它们可简化核⼼模块化系统组件和服务的重复使⽤,包括以下组件和服务:
丰富、可扩展的视图系统,可⽤以构建应⽤的 UI,包括列表、⽹格、⽂本框、按钮甚⾄可嵌⼊的⽹络浏览器
资源管理器,⽤于访问⾮代码资源,例如本地化的字符串、图形和布局⽂件
通知管理器,可让所有应⽤在状态栏中显⽰⾃定义提醒
Activity 管理器,⽤于管理应⽤的⽣命周期,提供常见的导航返回栈
内容提供程序,可让应⽤访问其他应⽤(例如“联系⼈”应⽤)中的数据或者共享其⾃⼰的数据
开发者可以完全访问 Android 系统应⽤使⽤的框架 API。
系统应⽤
Android 随附⼀套⽤于电⼦邮件、短信、⽇历、互联⽹浏览和联系⼈等的核⼼应⽤。平台随附的应⽤与⽤户可以选择安装的应⽤⼀样,没有特殊状态。因此第三⽅应⽤可成为⽤户的默认⽹络浏览器、短信 Messenger 甚⾄默认键盘(有⼀些例外,例如系统的“设置”应⽤)。
系统应⽤可⽤作⽤户的应⽤,以及提供开发者可从其⾃⼰的应⽤访问的主要功能。例如,如果您的应⽤要发短信,您⽆需⾃⼰构建该功能,可以改为调⽤已安装的短信应⽤向您指定的接收者发送消息。
后缀简介
APK是安卓应⽤的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis
或Sisx的⽂件格式。通过将APK ⽂件直接传到Android模拟器或Android⼿机中执⾏即可安装。apk⽂件和sis⼀样,把android sdk编译的⼯程打包成⼀个安装程序⽂件,格式为apk。 APK⽂件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex⽂件,Dex是Dalvik VM executes的全称,即Android Dalvik执⾏程序,并⾮Java ME的字节码⽽是Dalvik字节码。
⼀个APK⽂件结构为:
1. META-INF\ (注:Jar⽂件中常可以看到);
安卓app开发用什么框架2. res\ (注:存放资源⽂件的⽬录) ;
3. l (注:程序全局配置⽂件) ;
4. classes.dex (注:Dalvik字节码);
5. resources.arsc (注:编译后的⼆进制资源⽂件)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论