0

0

我是如何学习Android源码的

星夢妙者

星夢妙者

发布时间:2025-07-15 09:58:12

|

418人浏览过

|

来源于php中文网

原创

大家好,又见面了,我是你们的老朋友全栈君。

连续很长一段时间(从2017年6月9日到2017年6月26日),我一直在研究蓝牙技术,这还不包括撰写和整理文章的时间。不知不觉中,这段研究已经持续了这么久……我已经写了三篇关于蓝牙的长篇博客,如下所示:

我是如何学习Android源码的在这里就不放文章链接了,有需要的可以在我的文章中搜索。现在,是时候放松一下,给自己充充电了,来欣赏一下北京的晚霞美景。

我是如何学习Android源码的回到正题,先放上Android源码的连接地址Android源码,关于研究源码的好处,我想就不需要我再多说了。首先,Android源码体系非常庞大,在研究之前,需要先了解Android的体系结构,如下图所示:

Android体系结构我是如何学习Android源码的注,该图来自源码,路径为android\frameworks\base\docs\html\images\system-architecture

对于C和C++,我还可以继续学习,但对于Linux内核的知识,我实在是知之甚少,这方面还需要进一步补充和完善。

  • Application:应用层,包括各种系统应用或第三方应用。
  • Application Framework:应用程序框架层,提供各种API框架,系统开发人员可以使用所有framework层相关的接口。该层包括ActivityManager活动管理器,WindowManager窗口管理,ContentProvider内容提供者,ViewSystem视图系统,PackageManager包管理器,TelephonyManager电话管理器,ResourceManager资源管理器,LocationManager位置管理,NotificationManager通知管理。
  • Libraries & Android runtime:系统库(包括SurfaceManager图层管理,MediaFramework媒体库,SQLite数据库等,如上图所示),和核心库,虚拟机。
  • Linux kernel:Linux内核,从图中可以看出包括各种驱动,如显卡驱动,相机驱动,闪存驱动,Binder驱动,键盘驱动,音频驱动,电量管理(这表明电量的管理是在内核层实现的,framework和上层只能获得电量状态)。应该还有蓝牙驱动,但图中没有显示。看到这么多内容,你想从哪里开始学习呢?又从哪个版本开始呢?

首先,学习哪个版本的Android?其实这并不重要,所谓万变不离其宗。你可以选择研究5.1、6.0或其他版本,根据你自己的测试机来决定。等你彻底研究好之后,再去看更新的版本就会发现基本很好掌握。

其次,从哪里入手?我是从最简单的应用开始的,因为当时刚自学Java没几个月,不敢研究太深。首先接触的是settings应用——>蓝牙——>锁屏(恰巧,Android 6.0以后锁屏位于systemui中)。在研究某版本的某应用之前,先要看看该应用在该版本的演示效果,然后再进入代码的研究。对于应用的研究入口,绝对是清单配置文件。看一眼清单配置文件,你就能大致明白该应用界面的复杂程度以及各种权限和组件。然后找到整个程序的入口,之后就是源码的海洋……

第三,注释很重要。刚开始学习的人一般都不怎么看重注释,但这恰恰会使你错过很多知识。一般每个类的注释会注明该类的用法以及作用。字段注释会注明该字段表示什么意思,以及会造成何种后果。方法注释就更不用说了,方法参数和返回值以及注意事项全在这里。

萤火商城
萤火商城

萤火商城V2.0,是2021年全新推出的一款轻量级、高性能、前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP,前后端源码完全开源,看见及所得,完美支持二次开发,可学习可商用,让您快速搭建个性化独立商城。萤火商城V2.0开源版 [uni-app端]如何使用uni-app端一、导入uniapp项目 1. 首先下载HBuilderX并安装,地址:https://www.dcloud

下载

第四,学会取舍。系统源码代码量庞大至几个甚至几十个G,如果你每行都看,其实也没什么大的用处。

第五,善于总结。你只需要在分析之前先明白自己要研究的问题是什么?在分析之后善于总结,看看自己到底还有什么问题是剩下的。以及代码中有什么样的好的设计可以供你使用?

时间尚短,经验尚浅,只因连续几篇技术文章,大脑需要短暂休养,此文仅当随笔。

PS,工作了两年时间,有时会忍不住去给别人指导。遇到各种基础差但梦想大的初学者。在这里真心想引用《坏蛋是怎样炼成的》中的一句话,出来混迟早是要还的,不要好高骛远。总有一天,你会花费更多的时间来还你曾经欠下的技术债。所有的扩展延伸都是在扎实的基础上进行的,而且好的Java基础可以让你事半功倍。比如今天刚遇到一个,JDK的环境变量如何配置,跟什么有关系,这些基本的开发环境也并不在意。基础不好无所谓,但是不意识到自己的基础很差就想去做出个大神般的程序,这是很可怕的一件事。

随便吐槽,如有雷同,纯属巧合。

发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/4a420e5be8a530b2a41ef92af37d1287

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

836

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

741

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

736

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 12.3万人学习

Java 教程
Java 教程

共578课时 | 47.4万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号