肝疼了3万字的Android源码学习指南,2024年Android程序员职业规划

Google提供的四层架构非常经典,如果我们要深入学习这个架构,最好就是以Android系统启动流程开始学起,然后一步一步展开,牵引学习。这样不至于我们陷入源码的大海里而没有方向。

这个是之前我画的一张启动流程图:

android-boot-up.png

Java和C++通过JNI连接,C/C++通过system call直接调用linux os。

4.1 Loader层


1. Boot ROM:

上电后,BootRom会被激活,引导芯片代码开始从预定义的地方(固化在ROM)开始执行,然后加载引导程序到RAM。

2. Boot Loader引导程序

Boot Loader是启动Android系统之前的引导程序,引导程序是OEM厂商或者运营商加锁和限制的地方,它是针对特定的主板与芯片的。OEM厂商要么使用很受欢迎的引导程序比如redboot、uboot、ARMboot等或者开发自己的引导程序,它不是Android操作系统的一部分。

Boot Loader主要作用是检查RAM,初始化硬件参数等功能。

4.2 Kernel层


Kernel的启动流程:

alps/kernel/init/main.c

start_kernel() ==> rest_init() ==> kernel_thread(kernel_init) ==> kernel_init()

0号进程:

swapper进程(pid=0):又称为idle进程, 叫空闲进程,由系统自动创建, 运行在内核态。

系统初始化过程Kernel由无到有开创的第一个进程, 也是唯一一个没有通过fork或者kernel_thread产生的进程。

swapper进程用于初始化进程管理、内存管理,加载Display,Camera Driver,Binder Driver等相关工作。

1号进程

init进程(pid=1):由0号进程通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终运行在用户空间,init进程是所有用户进程的鼻祖。

2号进程

kthreadd进程(pid=2):由0号进程通过kernel_thread创建,是Linux系统的内核进程,会创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程。

kthreadd运行在内核空间, 负责所有内核线程的调度和管理 , kthreadd进程是所有内核进程的鼻祖。

4.3 Native层


Native层主要是init一号进程,并且由其孵化出来的一系列daemon进程,还有一些列native service。

  • init进程会孵化出ueventd、logd、healthd、installd、adbd、lmkd等用户守护进程;

  • init进程还启动servicemanager、bootanim、mediaserver等重要本地服务

  • init进程孵化出Zygote进程,Zygote进程是Android系统的第一个Java进程,Zygote是所有Java进程的父进程。

4.4 Java层


  • Zygote是第一个Java进程,并且是所有java进程的父进程,由init进程解析init.rc文件后fork生成。

  • System Server进程,是由Zygote进程fork而来,System Server是Zygote孵化的第一个进程。System Server负责启动和管理整个Java framework,包含ActivityManager,PackageManager,WindowManager等服务。

4.5 Application层


Zygote进程孵化出的第一个App进程是Launcher,Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上。所有的App进程都是由Zygote进程fork生成的。

五、学习计划

==============================================================================================================================================================================================

了解了大致的框架体系之后,接下来就是给自己列一个学习计划。博主不定期总结学习内容到博客上面来,与大家一起分享。博客会以Android N源码为主来分析,尽量每个知识点做到多画图,多总结,少贴大段源码,避免犯困。

5.1 四大组件


Android应用的四大组件Activity,Service,Broadcast Receiver, Content Provider。

  • 四大组件基础知识

  • Android四大组件

  • Android组件 - Activity

  • Android组件 - Service

  • Android组件 - Broadcast Receiver

  • Android组件 - Content Provider

5.2 消息处理机制


5.3 IPC通信


Binder

5.4 系统启动


  • Android系统启动总结,包含如何启动init进程,如何启动zygote进程system_server进程

  • Android系统启动流程

  • init进程相关包含init rc语法

  • Zygote进程相关知识

Android开发除了flutter还有什么是必须掌握的吗?

相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了

除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;

点击文档前往获取面试资料与视频教程;【阿里P7级别Android架构师技术脑图+全套视频】

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

img-IDmQin2O-1711025981889)]
[外链图片转存中…(img-faDTf8QX-1711025981889)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-6YedSNE6-1711025981890)]

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值