当前位置: 首页 > article >正文

Android FrameWork 学习路线

目录

前言

学习路线:

1.基础知识

2、AOSP 源码学习

3. AOSP 源码编译系统

4. Hal与硬件服务

5.基础组件

6. Binder

7. 系统启动过程分析

8. 应用层框架​编辑

9. 显示系统

10. Android 输入系统

11. 系统应用


前言

Android Framework 涉及的行业相当广泛,可以是手机,汽车,手表,冰箱,微波炉,电视,机顶盒,空调等等设备。
Framework 学习门槛也较高,而且需要的调试环境也需要成本,但薪资也比大部分 App 开发岗位高出不少。如果能系统地学习Framework,就显得更加尤为重要。

以下是一张android 经典框架图

·Linux kernel层,驱动程序
·HAL层,封装驱动硬件操作,向 App 提供统一稳定的驱动操作接口
·Native层,C/C++库以及Java 虚拟机
·Java 层,Java 库,系统服务等
·App 层,系统和三方APP

Framework 大多数指的是中间三层的开发,即 Java层、Native层、HAL层
Android 系统启动过程

1.由 Boot Loader引导开机
2.进入 -> Kernel
3.进入 ->Native
4.进入->Framework
5.进入 -> App

kernel层主要向上提供了驱动,Hal 层加以封装后,向上提供驱动程序功能·Native 层通过 init 进程2启动了很多守护进程用于支持系统的运转·Java 层通过 Zygote 孵化了 Java 守护进程,用于支持系统的运行和 App 的运行

Framework 能开发什么?

1.添加自己的硬件、驱动、HAL和硬件系统服务,硬件的提供商可能会提供相应软件支持.

2.定制系统 App,比如 Launcher Setting System Ul Message Camera 等.·

3.开发厂商自己的系统 App,比如 音视频播放器 应用商店 主题 红外遥控等·个性化功能开发,比如软件多开,手机分身,语音变声,录屏,双卡双待等等·

4.集成一些常用三方应用,比如 微信 淘宝 爱奇艺等

5.系统稳定性 性能 安全相关优化

6.系统裁剪

学习路线:

1.基础知识

开发语言我们必须掌握

 C/C++
 Java
 JNI

对一些工具类的语言有一定的了解

Python:源码下载工具 repo 使用 python 对 git 操作做了封装,以适应多个 qit 仓库的操作

Shell 编程:Android 编译系统包含了大量的 Shell 脚本

go 语言,Android 编译系统中部分脚本使用 qo 语言编写

早期 Android 编译系统使用 make 构建,后来逐步使用 Soong 进行替换,Android 的官方博客指出未来会使用 Bazel 来替换掉目前 make 和 Soong 混合的结构,鉴于 Android 代码量庞大这些替换都是部分的逐步开展的。


对于 Linux 需要掌握三个方面,

熟悉 Linux 的基本使用,主要是常用的命令和常用服务搭建
熟悉 Linux 系统编程,Native 层使用了很多系统编程接口,熟悉 Linux 系统编程是读懂Native 层的基础
Linux 系统编程可能或多或少需要我们对 Linux 内核有基本的了解另外在 Linux 的学习工程中兼顾一下操作系统基础的学习

2、AOSP 源码学习

3. AOSP 源码编译系统

掌握基本的编译命令,能够通过源码编译为固件烧录进入设备中

4. Hal与硬件服务

完成一个简单字符驱动程序的编写
完成 Hal层编写,首先掌握传统方式,再学习基于 HwBinder 的现代方式

最后就是在系统中添加硬件服务,写个简单的 App 访问我们的硬件服务

5.基础组件

基础组件就是被使用的比较多的组件,主要包含了

Android 智能指针
Android 属性系统
Android 日志系统
SeAndroid
Android 权限系统
匿名共享内存

6. Binder

Binder 是 Android 最核心的基础,整个 Android 都是基于 Binder 搭建的,不夸张的讲,不懂 Binder 就不懂 Android。

Binder 涉及了内核驱动层,C 层,C++ 层,Java 层,涉及知识多,流程复杂,很多人学了一遍有一遍,还是没有掌握。

7. 系统启动过程分析

主要熟悉整个系统启动的流程:

重点掌握:

1.init 的实现细节

2.Zygote 的具体实现

3.SystemServer 的内部实现

8. 应用层框架

主要搞懂:

  • AMS/ATMS
  • Handler 和 Looper
  • PackageManagerService
9. 显示系统

在掌握了 Android 显示系统整体框架后,再逐步学习一下内容:

  • Hal 层的 Gralloc 和 Hwcomposer
  • Surfaceflinger
  • WMS
  • View 系统
10. Android 输入系统

输入系统主要三个方面来具体学习:

  • 读取事件
  • 分发事件
  • 处理事件
11. 系统应用

对系统应用的开发要有所了解,主要学习一下几个 App:

  • Launcher
  • SystemUI
  • Settings


http://www.kler.cn/a/273136.html

相关文章:

  • mac-泛洪
  • mark 一些攻防 prompt
  • Python毕业设计选题:基于django+vue的4S店客户管理系统
  • Elasticsearch Date类型,时间存储相关说明
  • vue3中使用vue-diff工具来比较数据差异
  • Golang文件操作
  • 行尾检测论文汇总
  • 挖到宝了!这些内容管理平台是企业的最佳选择
  • Kotlin进阶之协程从上车到起飞
  • “SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用教程
  • Algae c++
  • SSA优化最近邻分类预测(matlab代码)
  • 代码随想录刷题day27|组合总和II组合总和II分割回文串
  • 四.排序(冒泡/选择)
  • 【数据结构与算法】:非递归实现快速排序、归并排序
  • 从0到1理解MySQL的事务和ACID特性
  • java方法的引用传递和值传递
  • 【力扣精选算法100道】——带你了解(数组模拟栈)算法
  • Java学习笔记(十八)综合练习,Properties配置文件
  • Python--类中作用域
  • 【精品】递归查询数据库 获取树形结构数据 通用方法
  • PSCA复位控制集成之复位信号
  • STM32使用常见错误合集(正在更新版)
  • sqllab第二十六A关通关笔记
  • 静态综合实验
  • 断言assert是什么?