问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Android Framework 学习路线

创作时间:
作者:
@小白创作中心

Android Framework 学习路线

引用
CSDN
1.
https://blog.csdn.net/a546036242/article/details/136746891

Android Framework涉及的行业相当广泛,从手机到汽车、手表等设备都有其应用。虽然学习门槛较高且需要一定的调试环境成本,但掌握Framework开发能带来更高的薪资和更广阔的职业发展空间。本文将为你提供一份系统的学习路线指南,从基础知识到具体组件,帮助你全面掌握Android Framework开发。

前言

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,比如LauncherSettingSystemUlMessageCamera等.
  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的学习工程中兼顾一下操作系统基础的学习
  1. AOSP源码学习
  2. AOSP源码编译系统
    掌握基本的编译命令,能够通过源码编译为固件烧录进入设备中
  3. Hal与硬件服务
  • 完成一个简单字符驱动程序的编写
  • 完成Hal层编写,首先掌握传统方式,再学习基于HwBinder的现代方式
  • 最后就是在系统中添加硬件服务,写个简单的App访问我们的硬件服务
  1. 基础组件
    基础组件就是被使用的比较多的组件,主要包含了
  • Android智能指针
  • Android属性系统
  • Android日志系统
  • SeAndroid
  • Android权限系统
  • 匿名共享内存
  1. Binder
    Binder是Android最核心的基础,整个Android都是基于Binder搭建的,不夸张的讲,不懂Binder就不懂Android。
    Binder涉及了内核驱动层,C层,C++层,Java层,涉及知识多,流程复杂,很多人学了一遍有一遍,还是没有掌握。

  2. 系统启动过程分析
    主要熟悉整个系统启动的流程:
    重点掌握:

  • 1.init的实现细节
  • 2.Zygote的具体实现
  • 3.SystemServer的内部实现
  1. 应用层框架
    主要搞懂:
  • AMS/ATMS
  • Handler和Looper
  • PackageManagerService
  1. 显示系统
    在掌握了Android显示系统整体框架后,再逐步学习一下内容:
  • Hal层的Gralloc和Hwcomposer
  • Surfaceflinger
  • WMS
  • View系统
  1. Android输入系统
    输入系统主要三个方面来具体学习:
  • 读取事件
  • 分发事件
  • 处理事件
  1. 系统应用
    对系统应用的开发要有所了解,主要学习一下几个App:
  • Launcher
  • SystemUI
  • Settings

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号