第一章 认识安卓的基础架构

引用:https://mp.weixin.qq.com/s?__biz=MzA4MjA0MTc4NQ==&mid=504090090&idx=1&sn=eba182e0b1d4fe373c1d81041d67461d#rd
读在最前面,工欲善其事,必先利其器。但是在你利其器之前,你需要的知道,“器”的内部结构,了解以后你开发学习利“器”的原理。

Android负责人Dan Morrill说:“ Android并不是传统的Linux风格的一个规范或分发版本,也不是一些列可重用的组件集成,Android是一个用于连接设备的软件块。”

连接栈

整理笔记的时候 发现以前划分的Android系统底层架构有点小变动,相比较之前的划分来说,更加的细致。层次结构更合理。
Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。

部分变动的结构图
未变动前的结构图

ps:附赠一个中文版的

中文版的结构图

(这里是参照安卓开发文档写的,另外补充一点以前的笔记,相当于一个笔记总结)
相比较旧的,新的划分添加了一层 HAL层(硬件抽象层 (HAL)):

硬件抽象层 (HAL):

提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

Linux内核 设备驱动程序层(Linux Kernel):

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

该层主要包括:驱动、内存管理、进程管理、网络协议等组件。

原生 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 版本 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语言编写。
a. Dalvik是冰岛一个小镇的名字。Dalvik VM获取生成的java类文件,将它们组合为一个或者多个、Dalvik可执行文件(.dex)。Dalvik VM的目标是找到所有可能的方式来优化JVM性能、内存及电池寿命。
b. 采用Dalvik VM的一个结果是,Android中最终的可执行程序代码不是java字节码,而是.dex文件。这意味着无法直接执行java字节码,必须得到java的类文件,然后将它们转换为.dex文件。

———————————————————————————————————————

Java API 框架:

您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:
丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
通知管理器,可让所有应用在状态栏中显示自定义提醒
Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据
开发者可以完全访问 Android 系统应用使用的框架 API.。

学习安卓的路线图

android学习线路图.jpg
  1. 学习Android要具备的基础知识
  2. JavaSE基本知识:集合、IO操作、线程
  3. WEB开发知识:HTML、jsp、servelet
  4. 服务器开发知识:jdbc数据库操作(Mysql)

谈点个人的小想法,很多人在之前学习安卓的时候觉得很多需要学习的东西,但是在实际开发过程中,你需要的不是所有的技能,只是部分,现在的学习过程只是一个基础的过程。希望能好好理解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容