前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Android 系统开发做什么?

Android 系统开发做什么?

作者头像
吴小龙同學
发布于 2021-04-01 08:48:54
发布于 2021-04-01 08:48:54
1.2K0
举报
文章被收录于专栏:吴小龙同學吴小龙同學

题外话

18 年我从 Android 应用开发转 Framework 层开发了,从此开启了 996 幸福生活,博客技术文更新基本停滞了,被工作占据了过多的精力,实在没时间像以前一样拟稿、写作,实践、反复修改去精心准备文章,另外也不知道该写什么了,很多经验心得都会涉及到项目本身,公司内部倒是写了不少总结文档,然而工作的事不便公开分享出来。我是一个在乎别人的看法,之前被很多人骂“江郎才尽”,其实我是很难受的。

在转 Framework 其实一开始我是很不适应,适应新环境也并没有想象当中那么容易,因此变得更不自信了,对自己的定位更加模糊,每半年换一个模块,从一开始做性能开发、转系统应用开发、又转通讯开发,刚有点感觉,因为工作调整,被安排做其他,技术没沉淀,总感觉虚的很。

Android 系统架构

这是来自官方 Android 系统架构,从上往下依次为应用框架(Application Framework)、Binder IPC proxies、系统服务(Android System Services)、硬件抽象层 (HAL)、Linux 内核。

Application Framework

从旧版架构图可以看出 Application Framework 大概有:

名称

简介

Activity Manager

用来管理应用程序生命周期并提供常用的导航回退功能。

Window Manager

提供一些我们访问手机屏幕的方法,如屏幕的透明度、亮度、背景。

Content Providers

使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。

View System

可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的 web 浏览器。

Notification Manager

使得应用程序可以在状态栏中显示自定义的提示信息。

Package Manager

提供对系统的安装包的访问,包括安装、卸载应用,查询 permission 相关信息,查询 Application 相关信息等。

Telephony Manager

主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,SIM 卡的信息等。

Resource Manager

提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。

Location Manager

提供设备的地址位置的获取方式,很显然,GPS 导航肯定能用到位置服务。

XMPP

可扩展通讯和表示协议,前身为 Jabber,提供即时通信服务。例如推送功能,Google Talk。

Binder IPC proxies

Binder 作为 Android 系统提供的一种通信方式, Binder IPC 层:作为「系统服务层」与「应用程序框架层」的 IPC 桥梁,互相传递接口调用的数据,实现跨进层的通讯。

Android System Services

Android System Services 是专注于特定功能的模块化组件,如进行窗口相关的操作会用到窗口管理服务WindowManager,进行电源相关的操作会用到电源管理服务PowerManager,还有很多其他的系统管理服务,如通知管理服务NotifacationManager、振动管理服务Vibrator、电池管理服务BatteryManager等。应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件。

Android 包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。

名称

简介

PowerManagerService

电源管理服务

WindowManagerService

最核心的服务之一,负责窗口管理

ActivityManagerService

最核心的服务之一,管理 Activity

PackageManagerService

程序包管理服务

AccountManagerService

账户管理服务,是指联系人账户

ContentService

ContentProvider 服务,提供跨进程数据交换

BatteryService

电池管理服务

LightsService

自然光强度感应传感器服务

VibratorService

震动器服务

AlarmManagerService

定时器管理服务,提供定时提醒服务

BluetoothService

蓝牙服务

DevicePolicyManagerService

提供一些系统级别的设置及属性

StatusBarManagerService

状态栏管理服务

ClipboardService

系统剪切板服务

InputMethodManagerService

输入法管理服务

NetworkStatsService

网络状态服务

NetworkManagementService

网络管理服务

ConnectivityService

网络连接管理服务

MountService

挂载服务

NotificationManagerService

通知栏管理服务

DeviceStorageMonitorService

磁盘空间状态检测服务

LocationManagerService

地理位置服务

SearchManagerService

搜索管理服务

WallpaperManagerService

墙纸管理服务,墙纸不等同于桌面背景,在 View 系统内部,墙纸可以作为任何窗口的背景

AudioService

音频管理服务

BackupManagerService

系统备份服务

AppWidgetService

Widget 服务

DiskStatsService

磁盘统计服务

SurfaceFlinger

负责 Layer 合成(composer),创建 surface,管理 surface

硬件抽象层 (HAL)

HAL 可定义一个标准接口以供硬件供应商实现,该接口使 Android 无需考虑底层驱动程序的实现。使用 HAL 可使您实现功能而不会影响或修改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。

Linux 内核

Android 基于 Linux 提供核心系统服务,如显示驱动、Camera 驱动、蓝牙驱动、音频系统驱动、Binder (IPC) 驱动、USB 驱动、WiFi 驱动、电源管理等。

Linux 内核也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

开发

谷歌发布版本,就是 AOSP 原生代码。AOSP 原生代码只支持极少数几款手机,比如 Pixel。

芯片厂商如高通、MTK、展锐在 AOSP 基础上发布自己的版本,每个芯片厂商会在 AOSP 原生代码上叠加自己的功能,比如双卡双待功能。

我们开发就是芯片商释放的代码,我们工作大部分就是解 Bug,比较低级,有部分需求定制,也基本是依赖芯片商支持。

从编程语言上来说,Android 系统层有很大一部分是用 Java 开发的。另外还有一大部分是用 Native(C/C++)语言开发的,要想在这个领域做到游刃有余,对 Java 和 C++语言要了解。

Android 系统开发涉及知识点非常多,需要潜下心来学习,目前我做的是多媒体显示服务模块,已经有段时间了,还只是知道的皮毛,路漫漫其修远兮,吾将上下而求索,想成为该领域的专家,还任重道远。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
安卓体系结构
GeekLiHua
2025/01/21
820
安卓体系结构
【Android 系统开发】Android框架 与 源码结构
Android 的 Linux 内核层 组成 : Linux 内核 和 驱动程序;
韩曙亮
2023/03/27
7340
Android系统启动流程
而我们的Android系统启动的过程就是架构图中从下往上运行加载的过程,这里有一张关于Android系统启动过程的总结图(图片来自参考链接gityuan.com),大家可以先看看:
码上积木
2021/01/11
1.7K0
Android系统启动流程
【Android 应用开发】对Android体系结构的理解--后续会补充
任何Android设备最底层的硬件包括 显示屏, wifi ,存储设备 等. Android最底层的硬件会根据需要进行裁剪,选择自己需要的硬件.
韩曙亮
2023/03/27
4630
【Android 应用开发】对Android体系结构的理解--后续会补充
Android架构你了解的有多少?进来看看就知道了
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
Android架构
2019/06/05
8540
Android架构你了解的有多少?进来看看就知道了
Android系统架构开篇
本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰。Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空间的Java层和Native层(C++/C),从而连通整个系统。
刘盼
2019/05/17
4K0
Android系统架构开篇
Android 系统架构
由于工作内容的转变,使得我向Android系统方向转变,对于一个Android系统工程师,了解Android整个系统架构是必然的。本篇是Android系统学习的开篇,Android系统庞大且复杂,但是能对Android的认识更深,更全面。开启Android系统之旅吧!
八归少年
2023/11/06
6550
Android 系统架构
Android系统架构与系统源码目录
前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是《Android开发艺术探索》的姊妹篇。在这本书的最后一章我会分析Android底层源码,但是毕竟是一本Android应用开发的书,对于底层源码阅读也只能带大家入个门。因此,在博客中我会新开一个“系统源码解析”的系列,该系列的开篇就是本篇文章。 1.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和L
用户1269200
2018/02/01
2.1K0
Android系统架构与系统源码目录
Android FrameWork面试点集合
WatchDog WatchDog的作用上面说过:一是检查是否发生了死锁,二是检查线程是否被任务blocked
没关系再继续努力
2021/11/23
5690
【IOS开发进阶系列】iOS系统架构专题
        iOS的系统架构分为四个层次:核心操作系统层(CoreOS layer)、核心服务层(Core Services layer)、媒体层(Medialayer)和可触摸层(Cocoa Touch layer)。图1-1展示了Mac OS X和iOS系统架构层次的一个对比。
江中散人_Jun
2023/10/16
1.8K0
【IOS开发进阶系列】iOS系统架构专题
android系统分层
  Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间,可能会损害厂家的利益。我们知道,Linux
xiangzhihong
2018/01/29
1.5K0
Android 手机从开机到 APP 启动经过的流程
本文讲解从开机到app显示画面的流程,但不分析源码,如果想阅读源码请到参考文章中查阅。
字节流动
2021/11/26
1.9K0
掌握 Android 系统架构,看这一篇就够了!
Android系统庞大且错综复杂,今天小编将带领大家初探Android系统整体架构,一窥其全貌。
Android技术干货分享
2019/04/19
24.4K0
掌握 Android 系统架构,看这一篇就够了!
Android跨进程通信IPC之6——Binder框架
为了让大家更好的理解Binder机制,我们先来看下Android的整体架构。因为这样大家就知道在Android架构中Binder出于什么地位。 用一下官网上的图片
隔壁老李头
2018/08/30
1.4K0
Android跨进程通信IPC之6——Binder框架
Android安全之系统构建解析篇(一)
最近接着介绍安卓系统安全知识,Android安全主要由系统框架实现,开发者构建设计,到用户授权三大方面组成。本系列将从安卓系统框架设计,到用户权限管理,到最后的应用安全签名等全面介绍,这个过程中,有转载,译文,当然关键的也有原创,有兴趣的可以继续关注。
开发者技术前线
2020/11/23
8450
Android安全之系统构建解析篇(一)
安卓系统框架介绍(安卓常用框架)
——源码地址1: https://android.googlesource.com/
全栈程序员站长
2022/07/30
8.8K0
安卓系统框架介绍(安卓常用框架)
《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式
《移动互联网技术》课程是软件工程、电子信息等专业的专业课,主要介绍移动互联网系统及应用开发技术。课程内容主要包括移动互联网概述、无线网络技术、无线定位技术、Android应用开发和移动应用项目实践等五个部分。移动互联网概述主要介绍移动互联网的概况和发展,以及移动计算的特点。无线网络技术部分主要介绍移动通信网络(包括2G/3G/4G/5G技术)、无线传感器网络、Ad hoc网络、各种移动通信协议,以及移动IP技术。无线定位技术部分主要介绍无线定位的基本原理、定位方法、定位业务、数据采集等相关技术。Android应用开发部分主要介绍移动应用的开发环境、应用开发框架和各种功能组件以及常用的开发工具。移动应用项目实践部分主要介绍移动应用开发过程、移动应用客户端开发、以及应用开发实例。 课程的教学培养目标如下: 1.培养学生综合运用多门课程知识以解决工程领域问题的能力,能够理解各种移动通信方法,完成移动定位算法的设计。 2.培养学生移动应用编程能力,能够编写Andorid应用的主要功能模块,并掌握移动应用的开发流程。 3. 培养工程实践能力和创新能力。  通过本课程的学习应达到以下目的: 1.掌握移动互联网的基本概念和原理; 2.掌握移动应用系统的设计原则; 3.掌握Android应用软件的基本编程方法; 4.能正确使用常用的移动应用开发工具和测试工具。
猫头虎
2024/04/08
2280
Android 系统架构及HAL层概述
apex_payload.img是由dm-verity支持的ext4文件系统映像。各种原生常规文件包含在apex_payload.img文件中
wizzie
2022/09/28
11.4K0
Android 系统架构及HAL层概述
Android应用启动过程详解
当用户在启动器上点击应用图标时,启动器会发起启动请求。这通常通过调用startActivity()方法实现,该方法的参数包括一个Intent对象,表示要启动的Activity。此时,启动器会将启动请求传递给系统的ActivityManagerService(AMS)进行处理。
陆业聪
2024/07/23
3560
Android应用启动过程详解
Android-Binder机制
Binder机制是​ Android系统中进程间通讯(IPC)的一种方式,Android中ContentProvider、Intent、aidl都是基于Binder。
用户7557625
2020/07/15
1.3K0
Android-Binder机制
推荐阅读
相关推荐
安卓体系结构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文