大家好,又见面了,我是你们的老朋友全栈君。
连续很长一段时间(从2017年6月9日到2017年6月26日),我一直在研究蓝牙技术,这还不包括撰写和整理文章的时间。不知不觉中,这段研究已经持续了这么久……我已经写了三篇关于蓝牙的长篇博客,如下所示:
在这里就不放文章链接了,有需要的可以在我的文章中搜索。现在,是时候放松一下,给自己充充电了,来欣赏一下北京的晚霞美景。
回到正题,先放上Android源码的连接地址Android源码,关于研究源码的好处,我想就不需要我再多说了。首先,Android源码体系非常庞大,在研究之前,需要先了解Android的体系结构,如下图所示:
Android体系结构
注,该图来自源码,路径为androidframeworksbasedocshtmlimagessystem-architecture
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
对于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中)。在研究某版本的某应用之前,先要看看该应用在该版本的演示效果,然后再进入代码的研究。对于应用的研究入口,绝对是清单配置文件。看一眼清单配置文件,你就能大致明白该应用界面的复杂程度以及各种权限和组件。然后找到整个程序的入口,之后就是源码的海洋……
第三,注释很重要。刚开始学习的人一般都不怎么看重注释,但这恰恰会使你错过很多知识。一般每个类的注释会注明该类的用法以及作用。字段注释会注明该字段表示什么意思,以及会造成何种后果。方法注释就更不用说了,方法参数和返回值以及注意事项全在这里。
第四,学会取舍。系统源码代码量庞大至几个甚至几十个G,如果你每行都看,其实也没什么大的用处。
第五,善于总结。你只需要在分析之前先明白自己要研究的问题是什么?在分析之后善于总结,看看自己到底还有什么问题是剩下的。以及代码中有什么样的好的设计可以供你使用?
时间尚短,经验尚浅,只因连续几篇技术文章,大脑需要短暂休养,此文仅当随笔。
PS,工作了两年时间,有时会忍不住去给别人指导。遇到各种基础差但梦想大的初学者。在这里真心想引用《坏蛋是怎样炼成的》中的一句话,出来混迟早是要还的,不要好高骛远。总有一天,你会花费更多的时间来还你曾经欠下的技术债。所有的扩展延伸都是在扎实的基础上进行的,而且好的Java基础可以让你事半功倍。比如今天刚遇到一个,JDK的环境变量如何配置,跟什么有关系,这些基本的开发环境也并不在意。基础不好无所谓,但是不意识到自己的基础很差就想去做出个大神般的程序,这是很可怕的一件事。
随便吐槽,如有雷同,纯属巧合。
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/4a420e5be8a530b2a41ef92af37d1287
以上就是我是如何学习Android源码的的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/22755.html
微信扫一扫
支付宝扫一扫