《Android底层开发技术》学习总结

2024-05-15 07:32

本文主要是介绍《Android底层开发技术》学习总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Android底层开发技术实战详解——内核、移植和驱动》学习总结
整本书看的比较粗,了解个大概,以后需要的时候,可以针对性的学习!

Android与Linux的关系
Linux Kernel的版权是GPL(General Public License),它要求对源代码的任何修改都必须开源。
Android的Kernel采用的GPL,但Android采用ASL(Apache Software License),不必开源。
Google特意修改了Kernel,将某些功能转移到上层HAL(Hardware Abstraction Layer)中。
因此,从2010年2月,即Linux2.6.33起,Android Kernel已经从Linux Kernel中删除。

三种内核
1、Goldfish,它是由Google提供的一种虚拟的ARM处理器,在Android的仿真环境中使用。
2、MSM(Mobile Station Modem),它是由美国高通(Qualcomm)公司提供的ARM处理器芯片组。
3、OMAP(Open Multimedia Application Platform),它是由美国德州仪器(Texas Instruments,简称TI)公司提供。

三类驱动程序
1、字符设备
2、块设备
3、网络设备

两种驱动类型
1、专用驱动,非Linux标准,纯软件
2、设备驱动

Android专用驱动
1、Staging,分期,分段,脚手架
Binder,进程间通信
Logger,日志系统
LowMemoryKiller,低内存处理
Timed Output,定时输出
Timed GPIO,定时GPIO
Ram Console,内存控制台
2、WakeLock和early_suspend,休眠,唤醒
3、Ashmem(Alocate SHare MEMory),内存映射与共享
4、Pmem(Physical MEMory),物理内存共享,不一定连续
5、Alarm,硬件时钟
6、USB Gadget,USB设备驱动
7、Paranoid,网络驱动

Android设备驱动
FrameBuffer,屏幕显示
Keyboard,键盘
RTC(Real Time Clock),实时时钟
TTY(TeleTYpe),终端,串口
NandFlash,硬盘,FLASH存储器
MMC(MultiMedia Card),存储卡
Battery,电池

显示系统(LCD,VGA)
FrameBuffer
SurfaceFlinger
Gralloc

输入系统(键盘,触摸屏,轨迹球)
事件:MotionEvent,KeyEvent
配置文件:kl=KeyLayout,kcm=KeyCharacterMap

音频系统
AudioFlinger
ALSA(Advanced Linux Sound Architecture),MIDI

视频输出系统
主显示区,RGB;额外显示区,YUV
Overlay(FrameBuffer,V4L2=Video for Linux 2)

多媒体框架
OpenMAX,底层驱动
OpenCORE,复杂,稳定
StageFright,简单,后入

照相机系统
V4L2=Video for Linux 2
Camera HAL

电话系统(通话Call,短信SMS,数据连接,SIM卡,电话本)
MODEM调制(Modulator)解调器(Demodulator)
RIL(Radio Interface Layer),AT命令

其他
WIFI,Bluetooth蓝牙,GPS(Global Positioning System)
Alarm报警器,Light光,Battery电池
Vibrator振动器
Sensor传感器

这篇关于《Android底层开发技术》学习总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991192

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA