前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >安卓系统框架介绍(安卓常用框架)

安卓系统框架介绍(安卓常用框架)

作者头像
全栈程序员站长
发布于 2022-07-30 01:07:19
发布于 2022-07-30 01:07:19
10.2K0
举报

大家好,又见面了,我是你们的朋友全栈君。

一、什么是Android

Android是由谷歌公司开发的一种基于Linux的开源的操作系统。

——源码地址1: https://android.googlesource.com/

——源码地址2:http://androidxref.com/

起初专为移动设备开发的一个操作系统,如手机,平板电脑,车载系统,智能电视等。

Android第一个版本2008年11月发布,至今有超过10年的历史,几乎每一年都会更新一个版本,下一个版本Anroid Q计划于今年10月23日发布。 API版本

二、Android系统分层

应用层

JAVA API Framework

Lib库及Android运行环境

HAL层

Linux内核

三、Android应用开发

需要具备哪些知识?

开发参考手册:https://developer.android.google.cn/

IDEAndroid Studio 或者Eclipse

语言:JAVA

基本知识点

四、Android四大组件

Activity: 通常一个activity指的就是一个屏幕

屏幕或者窗口需要布局,布局通常在Android manifest.xml中设置

生命周期

Service

Service又叫服务,主要处理较长时间的任务

运行不依赖用户界面,在后台运行

生命周期及用法

启动类型的服务: onCreate()- >onStartCommand()->Service running–调用context.stopService() ->onDestroy()

绑定类型的服务: onCreate()->onBind()->Service running–调用>onUnbind() -> onDestroy()

Broadcast Receiver: 翻译过来就是广播接收器,用于消息传递

当事件触发时发送广播,注册了广播的对象就能接收到消息

注册广播分为动态注册及静态注册

静态注册在Android manifest.xml中注册,动态在代码中注册

Content Provider

内容提供者

通过content provider为不同的应用提供数据存储和读取

通过Uri来标识唯一的访问入口

Content Provider通常会跟数据库(Sqlite)一起使用,也有网络、文件、XML的形式。

Android自带的Content Provider包括:Browser、CallLog、Contacts、MediaStore、Settings等

五、Android进程间通信

六、Context

Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。在面向对象语言里面绝大多数的操作需要以对象为基础,这个时候就需要context。

七、JAVA API Framework

SystemServer:是framework中最重要的一个进程,它是在虚拟机启动后运行的第一个java进程,SystemServer启动其他系统服务,这些系统服务都是以一个线程的方式存在于SystemServer进程中。

最常用的几个服务介绍:

ActivityManagerService :AMS,管理Acvitity生命周期和事件处理

PackageManagerService :PMS,程序安装及包管理

WindowManagerService:WMS,窗口管理包括显示、View、尺寸等

Telephony Manager :通话管理

八、Android Runtime & Library

library路径:/system/lib/

So库一般是由C/C++编译成的动态库,上层的Java程序通过JNI调用

主要包含:Lib c ,OpenGL,SSL ……

Android应用都是用JAVA语言开发的,JAVA是一门解释性语言,它需要运行在虚拟机的环境下, Android Runtime和Dalvik都是解释器,Dalvik是Android 4.4以前的版本使用,ART是4.4以后的版本。

九、Android 代码是怎么执行的?

在 Android 中,Java 类被转换成 DEX 字节码。DEX 字节码通过 ART 或者 Dalvik runtime 转换成机器码。这里 DEX 字节码和设备架构无关。 Dalvik 使用 JIT(Just in time)编译而 ART 使用 AOT(Ahead of time)编译。

十、HAL层

HAL:HARDWARE ABSTRUCT LAYER,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。

部分硬件厂商不愿意将自己硬件相关一些核心的东西开源出去,假如将对自己硬件的驱动程序全部放入内核空间驱动程序实现,那么必须遵循GPL协议,是必需开源的。有了HAL层之后,他们可以把一些核心的算法之类的东西的实现放在HAL层,而hal层位于用户空间,不属于linux内核,和android源码一样遵循的是appache协议,这个是可以开源或者不开的。

十一、Linux内核

Android驱动包含两部分,一部分是HAL层,另一部分是linux内核驱动 HAL层提供上层调用的接口,同时对接Linux内核,采用IOCTRL或者一些框架的形式来访问内核驱动 Linux内核提供各种驱动:USB,COM,WIFI,BT,CAMERA,AUDIO,FLASH

十二、AP和BP

通常来说一个Android手机包含两个处理器AP和BP

AP:Application Processor,运行操作系统和应用数据处理

BP:Baseband Processor,无线通信,信道调制,编码,包括通话,语音,短信数据业务,在此芯片上进行。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129739.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android 系统架构和应用组件那些事
继上一期浅谈了Android的前世今生,这一期一起来大致回顾一下Android 系统架构和应用组件。 Android 系统架构 Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建。这种软件叠层结构使得层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用程序无须任何改变。 Android的系统架构和其他操作系
分享达人秀
2018/02/02
1.9K0
Android 系统架构和应用组件那些事
1.Android-入门之系统架构介绍
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层,如下图所示:
诺谦
2019/12/19
6860
android系统分层
  Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间,可能会损害厂家的利益。我们知道,Linux
xiangzhihong
2018/01/29
1.6K0
Android系统架构开篇
本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰。Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空间的Java层和Native层(C++/C),从而连通整个系统。
刘盼
2019/05/17
4.1K0
Android系统架构开篇
【Android】分层架构设计
Android 是一种基于 Linux 的开放源代码软件栈,主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86等体系结构的机器上同样可以运行。
程序员小何SS
2021/11/29
1.2K0
B4A编程开发路线001_Android安卓基础
2023年02月04日午夜,在搜索中文可视化编程IDE时无意中发现了B4X的官网:跨平台 RAD 开发工具 |B4X。
用户1549490
2023/07/12
1.3K0
B4A编程开发路线001_Android安卓基础
从0系统学 Android--1.1认识 Android
默认学习者会简单的 Java 语法!Android 方面完全从零开始!跟着我系统的学习吧!
开发者
2019/12/26
7470
从0系统学 Android--1.1认识 Android
掌握 Android 系统架构,看这一篇就够了!
Android系统庞大且错综复杂,今天小编将带领大家初探Android系统整体架构,一窥其全貌。
Android技术干货分享
2019/04/19
25.1K0
掌握 Android 系统架构,看这一篇就够了!
重走Android路 之 Android系统架构图以及开发工具了解
LZ-Says:热腾腾的一天那,貌似今天帝都达到了高温,热腾腾,我滴天。。。各位老铁注意防暑,多喝水~~~
贺biubiu
2019/06/11
1.6K0
Android简介
简介 Android是基于Linux系统的开源操作系统,是由Andy Rubin于2003年在美国加州创建,后被Google于2005年收购。在2008年的时候发布了第一部Android智能手机,随后Android不断发展更新,占据了全球大部分的手机市场。 Android每一个版本都会用一个按照A-Z开头顺序的甜品来命名,但从Android P之后Google改变了这一传统的命名规则,可能是没有那么多让人熟知的甜品代号供使用以及甜品名字并不能让人直观的了解到哪一个甜品有什么特性,于是Google直接采用数字来命令系统,并且加深了logo的颜色,不再使用甜品作为代号。
红目香薰
2022/11/29
6680
Android简介
如何学习Android系统源码
Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心。我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关的资料。
全栈程序员站长
2022/08/18
4940
Android系统启动流程
而我们的Android系统启动的过程就是架构图中从下往上运行加载的过程,这里有一张关于Android系统启动过程的总结图(图片来自参考链接gityuan.com),大家可以先看看:
码上积木
2021/01/11
1.7K0
Android系统启动流程
安卓第二夜 有趣的架构
学习安卓的架构,是从操作系统的角度理解安卓。安卓使用Linux内核,但安卓的架构又与常见的Linux系统有很大的区别。我们先来回顾一下传统的Linux架构,再来看安卓的变化。 Linux系统架构 先来
Vamei
2018/01/18
1.6K0
安卓第二夜 有趣的架构
【Android 系统开发】Android框架 与 源码结构
Android 的 Linux 内核层 组成 : Linux 内核 和 驱动程序;
韩曙亮
2023/03/27
7600
Android常见面试题
onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy()
Demo_Yang
2019/04/09
1.3K0
Adnroid体系与系统架构
Android的体系架构鼓励系统组件的重用,共享组件间的数据,并且定义组件间的访问权限控制。可以说这些层次结构既是相互独立又是相互关联的。
小小工匠
2021/08/16
4140
Android系统架构与系统源码目录
前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是《Android开发艺术探索》的姊妹篇。在这本书的最后一章我会分析Android底层源码,但是毕竟是一本Android应用开发的书,对于底层源码阅读也只能带大家入个门。因此,在博客中我会新开一个“系统源码解析”的系列,该系列的开篇就是本篇文章。 1.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和L
用户1269200
2018/02/01
2.2K0
Android系统架构与系统源码目录
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》课程是软件工程、电子信息等专业的专业课,主要介绍移动互联网系统及应用开发技术。课程内容主要包括移动互联网概述、无线网络技术、无线定位技术、Android应用开发和移动应用项目实践等五个部分。移动互联网概述主要介绍移动互联网的概况和发展,以及移动计算的特点。无线网络技术部分主要介绍移动通信网络(包括2G/3G/4G/5G技术)、无线传感器网络、Ad hoc网络、各种移动通信协议,以及移动IP技术。无线定位技术部分主要介绍无线定位的基本原理、定位方法、定位业务、数据采集等相关技术。Android应用开发部分主要介绍移动应用的开发环境、应用开发框架和各种功能组件以及常用的开发工具。移动应用项目实践部分主要介绍移动应用开发过程、移动应用客户端开发、以及应用开发实例。 课程的教学培养目标如下: 1.培养学生综合运用多门课程知识以解决工程领域问题的能力,能够理解各种移动通信方法,完成移动定位算法的设计。 2.培养学生移动应用编程能力,能够编写Andorid应用的主要功能模块,并掌握移动应用的开发流程。 3. 培养工程实践能力和创新能力。  通过本课程的学习应达到以下目的: 1.掌握移动互联网的基本概念和原理; 2.掌握移动应用系统的设计原则; 3.掌握Android应用软件的基本编程方法; 4.能正确使用常用的移动应用开发工具和测试工具。
猫头虎
2024/04/08
2830
Android面试题大全
Android面试题总结 Android四大组件 Activity(活动) 概念 Service(服务) 概念 定义与作用 Content Provider(内容提供器) 介绍 作用 系统的Content Provider 自定义Content Provider Broadcast Receiver(广播) 概述 广播的作用 广播接收者的创建 广播接收者的类型 注册广播的两种方式 静态注册和动态注册的区别 有序广播和无序广播的区别 有序广播接收者们的优先级 有序广播的拦截和篡改 Android类加载器 An
是阿超
2022/11/02
1.5K0
Android 开发基础常识
可以通过bindService的方式,先在Activity里实现一个ServiceConnection接口,并将该接口传递给bindService()方法,在ServiceConnection接口的onServiceConnected()方法 里执行相关操作。
zhangjiqun
2024/12/16
1420
Android 开发基础常识
相关推荐
Android 系统架构和应用组件那些事
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档