理解Android Framework层最好的方式之一,就是所谓的“RTFSC (Read The Fucking Source Code)”。随着2018年 8 月Android 9.0的正式发布,笔者决定对新版本的部分源代码进行深入学习和研究,并加以整理发布于个人博客中。本系列文章的组织结构和相关说明如下:
(1)所有的Android源代码来源于Google Git中的android-9.0.0_r8分支,由于国内可能需要VPN才能访问,笔者已经将压缩包上传到了百度云盘进行共享。
(2)每篇文章以一个常用的API方法或机制为入口,深入分析它在Android Framework层中的调用流程。笔者会尽可能连贯地分析方法调用链,当出于简洁性考虑需要省略或跳过一些执行流程时,会在文中显式地说明。
(3)全文结构上包括正文、总结和参考文献三部分。其中,正文部分将整个调用流程划分为若干章节,每个章节再根据包含的方法数划分为若干小节。为了使读者能快速定位到特定章节,笔者为每个小节增加了锚点,在博客原始链接后附加“#chX-Y”就能快速跳转到“X.Y”小节
(4)每个小节的标题通常为“方法名@类名”,表示对单个方法进行分析。特别地,当存在同名(或名称相似)的重载方法时,为了压缩篇幅会将它们合并到一个小节中,此时小节的标题可能使用括号来显示多个方法间的细微差异。
(5)笔者在每个方法的代码开头增加了一行形如“#id path class_name (L#Num)”的注释,其中“#id”表示方法的唯一编号,“path”表示以(1)中的Git资源链接作为{root}的前提下源代码文件所在的目录,“class_name”表示方法所属的类的完全限定名,“(L#Num)”表示方法在源代码中对应的行号。如有必要,笔者会在代码片段下方对其中的重要语句进行详细分析,并以“【L-#Num】”的形式指出语句在本文代码片段(而不是源文件)中的行号。
(6)为了提高的代码可读性,笔者对原始代码进行了布局和内容上的调整,主要包括:移除所有注释和注解、调整代码的缩进格式(确保在不低于1366*768的分辨率下浏览代码时不会出现水平滚动条)、省略无关紧要的代码并用“…”代替、在方法调用代码右侧添加“调用#N”的注释标识调用流程。
(7)正文中提到的方法、字段、常量等均使用“粉底红字”的格式,以区别于普通的单词或概念。
(8)本系列所有内容均为原创,其中引用的文章、博客、书籍会以尾注的形式进行标明。如需转载,请尊重知识产权,注明引用地址。
(9)笔者知识水平有限,如有错误,欢迎指正和交流。

深入分析Android 9.0源代码——引言相关推荐

  1. 深入分析Android 9.0源代码——Activity启动流程

    引言 点击此处查看<深入分析Android 9.0源代码>系列的组织结构和相关说明. 1 应用进程发起启动请求 本章的调用流程如下图所示: (Context) Activity Instr ...

  2. 深入分析Android 9.0源代码——Service启动流程(startService方式)

    引言 点击此处查看<深入分析Android 9.0源代码>系列的组织结构和相关说明. 1 应用进程发起启动请求 本章的调用流程如下图所示: (Context)ContextWrapperC ...

  3. Android 6.0 源代码编译实践

    前阵子去上海参加 Android 开发面试,被问及了 Android 的基本原理.常用组件背后的实现机制.设计模式等问题,我都回答地不好.面试时,老司机们常常问我对知识点"背后的实现代码有没 ...

  4. Android 4.0 源代码结构

    Android源码的第一级目录结构 Android/abi (abi相关代码.ABI:application binary interface,应用程序二进制接口) Android/bionic(bi ...

  5. 面向开发者的 Android 8.0 Oreo 详细介绍

    无需原生开发基础,也能完美呈现京东商城.<混合开发京东商城系统,提前布局大前端>课程融合vue.Android.IOS等目前流行的前端和移动端技术,混合开发经典电商APP--京东.课程将各 ...

  6. android 6.0编译环境,MacOS下编译Android6.0源代码

    编译Android系统,只能在OS X环境下或者是Linux环境下,这篇文章,也是买Mac不久后写的,当时想顺便测试一下电脑的性能,编译Android系统要多久.整理笔记的时候发现,也就顺便发布出来. ...

  7. Android 4.0 Switch 控件用源代码实现

    最近项目需要,在4.0 以前的版本上实现一个android 4.0 上的Switch控件,上网找了些例子,都不尽如人意.自己动手,丰衣足食.于是便翻看源码,找到4.0源码中Switch实现的方法.照样 ...

  8. Android 6.0 指纹识别功能学习(一)----阿冬专栏!!!

    转载自:http://www.cnblogs.com/changyuet/p/5535082.html 由于毕设需要设计增强的身份认证(生物特征认证方式),所以需要学习指纹识别相关的android6. ...

  9. android下载后的app自动安装,Android 7.0 下载APK后自动安装

    随着Android版本越来越高,Android对隐私的保护力度也越来越大.这些隐私权限的更改在为用户带来更加安全的操作系统的同时也为开发者带来了一些新的任务.如何让你的APP能够适应这些改变而不是崩溃 ...

最新文章

  1. android 屏幕旋转180度
  2. VI和VIM编辑器深入学习笔记--基本vi命令
  3. php 后退 触发事件,php – 后退按钮的会话问题
  4. 【PHP 面试知识梳理】
  5. 基于错误的sql注入
  6. linuxC编程实战 my_server.c例子问题总结
  7. 电子计算机电缆用引流线,本质安全防爆电路用仪表计算机电缆
  8. mysql字符串拼接有空值_mysql字符串如何拼接并设置null值 mysql字符串拼接并设置null值实例方法...
  9. AlphaBlend失败,错误码87
  10. 网上做什么可以赚钱?网上最靠谱的赚钱方法
  11. php对视频分割,如何把一个视频无损分割成多个视频片段(最好是质量和格式无变化)...
  12. 经营项目计算机、软件及辅助设备、
  13. Html table边框重叠存在空隙的问题
  14. win10关闭自带的杀毒
  15. CNN 入门讲解:什么是标准化?
  16. SpringBoot库存管理系统,拿来学习真香
  17. 同步任务和异步任务(微任务和宏任务)
  18. 大数据 数据治理 | 微信交流群~
  19. Java,该学什么?
  20. 股市入门篇——什么是熊市?

热门文章

  1. macbook 安装maven
  2. 无限法则进入游戏后卡退链接不上服务器,腾讯无限法则黑屏闪退怎么办 无法正常进入游戏的解决方法一览...
  3. 一段男孩与女孩的对话
  4. 华为手机设置页面黑色_华为手机能将视频设置成来电铃声!原来方法这么简单,学到了...
  5. web html页面显示autocad等dwg格式图形文件方法
  6. 超细立磨机-超细粉末处理装置
  7. 阿里巴巴和环球资源两大外贸网站,我们该选谁?
  8. 灰太狼的优点,现代好男人的楷模。
  9. datareader分页
  10. 如何利用EFM32 ZERO GECKO 测量其他板子的功耗?