Android平台架构的介绍和源码分析

深入探索Android源代码:详细解析与示例 通过阅读源代码和运行示例,开发者可以更好地理解Android系统的内部机制和实现细节,从而更高效地开发Android应用程序。常用的IDE有Android Studio和Eclipse等,通过导入源代码,可以轻松地浏览和搜索源代码文件。阅读源代码:在Android源代码的Frameworks模块中,可以找到Activity类的实现代码。构建源代码:获取源代码后,需要进行构建以生成可执行文件和库。Frameworks:包含了Android系统的核心框架代码,提供了各种API和服务,用于应用程序的开发和运行。 阅读详情

本篇文章为Android源码学习的第一章,主要讲述Android平台架构的分层,以及如何下载Android源码。

Android平台架构介绍

Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。下图所示为 Android 平台的主要组件。
image
从上图可以看出,Android系统大体可以分为6个层次,从下往上依次是:
1. Linux内核层:Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
2. 硬件抽象层 (HAL):硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
3. 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 语言功能。
4. 原生 C/C++ 库:许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。
如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。
5. Java API 框架:您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:
+ 丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
+ 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
+ 通知管理器,可让所有应用在状态栏中显示自定义提醒
+ Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
+ 内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据

开发者可以完全访问 Android 系统应用使用的框架 API。
6. 系统应用:Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。
系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。

从上图可以将Android平台划分为两层,一层是由C/C++编写的,可以称为Native层。另一层是由Java编写的,可以称为Framework层。这两层之间的联系是通过JNI进行连接。

Android源码下载

了解了Android平台架构之后,作为开发者学习源码,需要下载其源代码。在下载源代码之前,需要了解AOSP这个概念,AOSP是Android Open Source Project(Androi开源项目)的缩写,如果可以翻墙的话,可以按照AOSP官网 https://source.android.com/setup/downloading 这个地址上的步骤进行源码下载,如果不具备翻墙的条件,可以在清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 进行下载。步骤如下:

安装 Repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

建立工作目录

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

初始化仓库

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
## 如果需要某个特定的Android版本,则使用repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-7.1.0_r1

同步源码树(以后只需执行这条命令来同步)

repo sync

如果中间有网络断开的情况,则只需要执行repo sync继续同步即可。直到下载完Android源码。

相关链接

Android官方文档
AOSP官网
清华大学AOSP镜像地址
中国科学技术大学开源软件镜像服务

Android 4.2.2 API源码解析与实战课程设计 本文还有配套的精品资源,点击获取 简介:Android 4.2.2 Jelly Bean版本是谷歌开发的开源操作系统,带来多项创新与性能改进。开发者可以利用"android-17.zip"和"android.jar"深入了解其核心API。本文将介绍如何通过分析Activity、Service、Broadcast Receiver和Content Provider等关键组件,... 阅读详情

相关推荐

025集-项目结构介绍(2)和Activity常用方法

025集-项目结构介绍(2)和Activity常用方法视频教程,不错哦。

Android系统架构解析与系统源码目录

Android框架是一个大的系列,熟悉其中的流程对于Android开发尤其重要,这里面有很多重要的工作和面试的知识点,从今天开始,我将发布一个系列博客,对于系统源码层进行分析。今天首先对Android的框架结构以及系统源码目录进行解析。 1 Android系统架构图 众所周知,Android是谷歌开发的一款基于Linux的开源操作系统,Android系统架构分为五层,从下到上依次是Linux内核层,硬件抽象层,系统运行库层(Android Runtime + Native C/C++ Librarie.

周将的博客 1095

Android例子源码可以通用出来的项目整体架构

本例子是一个不错应用开发的ui框架,有自定义android项目底部任务栏和实用的Fragment切换四个页面基本可以包括一个简单项目的整体架构,例子只是纯布局,没有任何的功能实现,项目编码UTF-8默认编译版本4.4.2有简单的中文注释源码有分层

Android平台架构的介绍和源码下载

本篇文章为Android源码学习的第一章,主要讲述Android平台架构的分层,以及如何下载Android源码。 Android平台架构介绍 Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。下图所示为 Android 平台的主要组件。从上图可以看出,Android系统大体可以分为6个层次,从下往上依次...

weixin_34121304的博客 218

[毕设季]第一讲:Android项目结构

本节主要介绍Android开发环境的搭建、Android项目的基本结构、编写一个简单的小例子HelloWorld,带大家初步认识一下Android开发。

andriod 应用程序结构

归纳andriod 应用程序结构,便于开始学习者有一个总体的认识。

Android源代码分析安全相关--来自官网

                                                                               Android源代码分析                                                                                   2018年12月14日 1、官网:https:/...

WSN_IPv6的博客 597

Halcon 3D点云匹配实战:从预处理到模板创建的完整流程(附代码)

本文详细介绍了Halcon在3D点云匹配中的实战应用,涵盖从预处理到模板创建的完整流程。通过代码示例和实用技巧,帮助开发者掌握点云采样、降噪、三角化等关键技术,并优化匹配参数以提高精度和效率。适用于工业检测、机器人引导等领域。

weixin_33670786的博客 432

Android核心服务解析篇(二)——Android源码结构分析

获得Android源码后,我们来分析源码结构。源码的全部工程分为如下三个部分。 ①Core Project:核心工程部分,这是建立Android系统的基础,保存在根目录的各个文件夹中。 ②External Project:扩展工程部分,可以使其他开源项目具有扩展功能,保存在external文件夹中。 ③Package:包部分,提供了Android的应用程序,内容提供者,输入法

李元静 1万+

深入解析Android14应用安装权限:从声明到授予的完整适配指南

本文深入解析Android14应用安装权限的适配方法,重点介绍了从权限声明到授予的完整流程。与Android13相比,Android14在权限管理机制上进行了重要调整,特别是通过AppOpsManager实现权限的对象化封装。文章详细讲解了权限声明的基础配置、Framework层适配方案、运行时权限授予方法以及常见问题排查指南,帮助开发者高效完成Android14权限适配。

o9p0q1的博客 693

从零搭建芯片设计环境:在Cadence虚拟机中集成QRC进行寄生参数提取

本文详细介绍了在Cadence虚拟机中集成QRC工具进行芯片设计中的寄生参数提取的全流程。从环境准备、QRC安装配置到实际提取操作,提供了完整的步骤指南和常见问题解决方案,帮助工程师高效搭建芯片设计环境并优化提取性能。

weixin_30379531的博客 618

Android开发者需要掌握哪些技能?

首先下一个定义,什么样的人可以算是资深工程师?如果拿国内互联网行业相对为通用的标准,我认为至少应该是百度T7,阿里P8这样的职级,可能是技术Leader,也可能是团队中最核心的技术骨干。团队对这样一位工程师的要求,肯定不只是精通技术和经验丰富这么简单。编码和解BUG当然是其中非常重要的部分,但除此之外我认为,其具备的技能至少应该要包括以下几点:**关于团队:**对内建设研发梯队,提升团队内聚力和执行力,注重个人的成长,快速提升团队的战斗力,成员的技术和业务能力;

2401_89190771的博客 747

海思SD3403/SS928开发(二)环境搭建:从零到一构建高效开发环境的实战指南

本文详细介绍了海思SD3403/SS928开发板环境搭建的全流程,包括Ubuntu系统选择、基础配置、开发环境依赖安装、SDK工具链配置等关键步骤。通过实战经验分享,帮助开发者避免常见问题,快速构建高效开发环境,提升开发效率。

weixin_28717683的博客 284

android 动画 最顶层_2020一个资深的Android开发者需要掌握哪些技能?

前言对于一个资深的Android开发者需要掌握哪些技能?在这给出一些看法和分享。文末还有分享一些Android工程师必备学习的架构视频资源福利以及架构面试专题文档和架构学习笔记等,资料福利都是免费分享!!!如果资源不错的话,你可以回来给我点个赞,感谢您的支持。一位资深的Android开发者已经是达到了高开及架构层面,所需要负责的工作及技能要求也会是一定高度的要求,下面说说Android架构师所需具...

weixin_39637179的博客 290

别再只会调速度了!用STM32的定时器中断精准控制伺服电机转角(避坑指南)

本文详细介绍了如何利用STM32的定时器中断和PWM输出实现伺服电机的精准转角控制,避免常见的速度控制误区。通过硬件配置、脉冲计数逻辑和优化技巧的实战讲解,帮助开发者掌握高精度位置控制方法,适用于工业自动化和机器人控制等场景。

weixin_42531163的博客 414

基于 SquashFS 构建 Linux 可读写文件系统

嵌入式 Linux 启动过程 本文所描述的的 Linux Image 由 BootLoader、kernel、initrd、rootfs 组成,它们共同存在于一个可以启动的存储设备中(本文以 USB 为例)。组成架构如下: 图 1. 可启动 linux 镜像文件结构 各个模块的作用如下: Boot Loader:由 BIOS 加载,用于将后续的 Kernel 和 initrd 的装载到内存中 kernel:为 initrd 运行提供基础的运行环境 initrd:检测并加载各种驱动程序 ro

wzq2009的专栏 1171

Android系统源码分析/基础部分/系统编译环境搭建

Android是一个庞大的系统,包含太多的模块,各种模块的类型也有10多种。为了管理整套源码的编译,Android专门开发了自己的Build系统。从大的方面讲,Android的Build系统可分为3大块:第一块是位于build/core目录下的文件,这是Android Build系统的框架和核心;第二块是位于device目录下的文件,存放的是具体产品的配置文件;第三块是各模块的编译文件:Andr...

cx_chess的博客 601

ARM一致性总线CMN600AE

是基于Mesh拓扑结构,对外支持AMBA CHI/ACE-LITE等接口,内部改用路由结构转发数据,并提供硬件一致性和系统缓存,还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz,另外AE版本增加了车规芯片的安全功能,总线内部采用EDC检查,接口采用的奇校验。CMN-600AE具有以下特点:该网络符合功能安全标准,例如ISO 26262(汽车电子领域的功能安全标准)或IEC 61508(工业自动化领域的功能安全标准)等。

weixin_50518899的博客 3501

2020作为一个资深的Android开发者需要掌握哪些技能?,高级android开发强化实战pdf

负责公司智能硬件设备的基础软件平台的架构工作; 负责跨MTK、高通平台的Android BSP架构的设计; 负责业务端APP的架构设计、性能调优、疑难问题的分析和解决工作; 负责Android平台新技术的研究,构建高效率、高性能、可扩展的组件,完善开发框架。 技能要求: 深度理解Android平台架构、主要组成和工作模式; 有linux内核、framework和jni、虚拟机、安全逆向等底层技术经验; 深入理解设计模式,能够设计出高內聚,低耦合的系统框架,提升开发效率; 具有比较强的客户端系统架构设计.

wqwq_22的博客 316

机器视觉框架源码——解读5(Dock和开源UI)

本文介绍了工业软件中Dock工具面板的使用方法,主要包括三个部分:添加avalonDock引用、修改属性配置(如显示样式和背景色),以及通过MVVM命令实现布局的加载和保存。加载布局通过XmlLayoutSerializer从XML文件恢复界面状态,保存布局则将当前DockManager的布局序列化为XML文件。文章提供了代码示例和截图说明,帮助开发者快速掌握Dock面板的核心功能。

Z's Palace 401

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

我怎么感觉全世界都在劝退学Android的程序员?

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

2401_84009929的博客 1126

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android知识体系

---- # 数据结构 > 1、栈 Stack > 2、队列 Queue > 3、链表 Linked List > 4、数组 Array > 5、哈希表 Hash Table > 6、二叉树 Binary Tree > 7、堆 Heap > 8、并查集 Union Find > 9、字典树 Trie # 算法 > 1、二分搜索 Binary Search > 2、分治 Divide Conquer > 3、

不学习傻了吧 4866

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android事件传递机制

实验环境 OS X 10.9 Eclipse(ADT) Android源码版本:API Level 19(Android 4.4) Android事件构成 在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作。所有这些都构成了Android中的事件响应。总的来说,所有的事件都由如下三个部分作为基础: 按下(

455

Android工程师从初级到资深所应具备的技术栈(不断补充中)

在Android开发上也做了有些年头了,对Android开关相关的技术有了一定的积累,不敢说有多深,总是一些经验与体会,一个开发人员,在完成工作的同时,应该不断完善自身,这样才能长期保持竞争力。在技术领域,有两个特点,一为更新极快,二为多年不变。都是对的,新技术更新很快,而一些原理,底层技术却是多年不变的。技术人员在积累技术时,要多关注底层原理,而不要把主要经力放在追逐新技术上。所谓万变不离其中,...

kcstrong的博客 1293
上一篇: Android中其他优化知识点
下一篇: Android开源库的制作
全栈大师兄
博客等级 码龄11年 448粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值