我是如何学习Android源码的
一连很长时间(从2017/06/09到2017/06/26)都在研究蓝牙,而且这只是文章发表的时间,再加上组织文章和研究的时间,不知不觉中就坚持这么久………,也写了蓝牙的三篇博客,而且篇幅很长如下:
在这里就不放文章链接了,有需要的在我的文章中搜索即可,现在,是时候放空一下,给自己充充电了,来张美景,欣赏一下北京的晚霞。
言归正传,先放上Android源码连接地址Android源码,至于研究源码的好处,估计不用我再罗嗦了。
首先,源码体系很庞大,在研究之前,先要搞清楚Android体系结构,如下图所示
Android体系结构
注,该图来自源码,路径为android\frameworks\base\docs\html\images\system-architecture
对与c和c++我还可以学习,但是对于Linux内核的知识真是少之又少,所以这个还需要补充完善
- Application:应用层,包括各种系统应用或者三方应用
- Application Framework:应用程序框架层,提供各种API框架,系统开发人员可以使用所有framework层相关接口。该层包括AMactivity管理器,windowManager窗口管理,ContentProvider内容提供者,ViewSystem-view系统,PackagesManager包管理器,TelephonyManager电话管理器,ResourceManager资源管理器,LocationManager位置管理,NotificationManager通知管理
- Libraries&Android runtime:系统库(包括SurfaceManager图层管理,MediaFramework媒体库,SQLite数据库,等如上图所示),和核心库,虚拟机
- linux kernel:Linux内核,看图应该是各种驱动,包括显卡驱动,相机驱动,闪存驱动,Binder驱动,键盘驱动,音频驱动,电量管理(这个可以看出对于电量的管理是在内核层实现的,framework和上层只能获得电量的状态)应该还有蓝牙驱动,不过没看到
看到这么多东西,你想学那个呢?又从哪个版本学起呢?
- 第一,学习Android哪个版本??这个其实倒无所谓,正所谓万变不离其宗,按照目前,你可以研究5.1或者是6.0又或者是别的,看你自己测试机。等你彻底研究好之后再去看更新的版本就会发现基本是很好掌握的。
- 第二,要从哪儿入手? 我是先从最简单的应用入手,毕竟是当时刚自学java没几个月,不敢研究太深。首先接触的是settings应用–>蓝牙—>锁屏(恰巧,andriod6.0以后锁屏位于systemui中). 在研究某版本的某应用之前,先要看看该应用在该版本的演示效果,然后再进入代码的研究。
- 对于应用的研究入口绝对是清单配置文件,看一眼清单配置文件你就大致可以明白该应用界面的复杂程度以及各种权限,组件。然后找到整个程序入口,之后便是源码的海洋……..
- 第三,注释很重要 刚开始学习的人一般都不怎么看重注释,但这恰恰会使你错过很多知识。一般每个类注释会注明该类的用法以及作用。字段注释会注明该字段表示什么意思,以及会造成何种后果。方法注释就更不用说了,方法参数和返回值以及注意事项全在这里
- 第四,学会取舍。系统源码代码量庞大至几个甚至几十个g,如果你每行都看其实也没什么大的用处。
- 第五,善于总结,你只需要在分析之前先要明白自己要研究的问题是什么?在分析之后善于总结,看看自己到底还有什么问题是剩下的。以及代码中有什么样好的设计可以供你使用的
时间尚短,经验尚浅,只因连续几篇技术文章,大脑需要短暂休养,此文仅当随笔。
ps,毕竟是工作了两年时间,有时会忍不住去给别人指导。遇到各种基础差但梦想大的初学者。在这里真心想引用《坏蛋是怎样炼成的》中的一句话,出来混迟早是要还的,不要好高骛远。总有一天,你会花费更多的时间来还你曾经欠下的技术债。
所有的扩展延伸都是在扎实的基础上进行的,而且好的java基础可以让你事半功倍。
比如今天刚遇到一个,jdk的环境变量如何配置,跟什么有关系,这些基本的开发环境也并不在意。
基础不好无所谓,但是不意识到自己的基础很差就想去做出个大神般的程序,这是很可怕的一件事。
随便吐槽,如有雷同,纯属巧合
我是如何学习Android源码的相关推荐
- 小姐姐笔记:我是如何学习简单源码拓展视野的
大家好,我是若川.这是我上周组织的源码共读纪年小姐姐的笔记,写得很好.所以分享给大家.欢迎加我微信 ruochuan12,进源码共读群.其他更多人的笔记可以阅读原文查看. 川哥的源码解读文章:据说 9 ...
- 对Android源码分析总结(Z)
也许大家对与Android源码还不是很了解,看完本文后对您一定会大有帮助,下文除了学习Android源码基本性质外还对Android源码的编程技巧给予说明. 在Android中进行处理Android源 ...
- android 4 源码目录,LXR 目录Android 源码
LXR 索引Android 源码 最近在学习android 源码,为了便于查看和搜索代码,利用LXR 建立了android 源码索引环境,非常方便. LXR 本身是建立对linux 源码进行索引的,本 ...
- Android源码阅读方法
很多读者,尤其是初学者特别抗拒去看源码,这里我说明一下为什么要进行源码分析.其中包括下面一些好处: 学习Android源码有助于我们学习其中的设计模式.思想.架构. 熟悉整个源码的架构,有助于我们更加 ...
- android源码编译 简书,android学习笔记之源码编译
编译环境 1.需要Ubuntu 64bit,建议Ubuntu14.04 64-bit 2.安装openJDK7 $ sudo apt-get update $ sudo apt-get install ...
- 【Linux/Ubuntu学习6】unbuntu 下载android源码
在Windows下安装Cygwin,通过Cygwin也可在Windows里通过本文的下载步骤下载Android源码. 以下为在Ubuntu下下载Google Android4.4源码的步骤: 1. 安 ...
- Android学习之android源码的导入
1.首先,在sdk的目录底下找到sources文件目录,如下图所示: 打开此目录,就有android sdk下载的源码文件,如下图所示: 这个android-17下就有android源码,我们只需把这 ...
- Android源码学习之浅析SystemServer脉络
在之前的博文中<Android源码学习之如何创建使用JNI>和<Android源码学习之如何使用eclipse+NDK>中,浅谈了如何创建使用JNI和如何利用NDK工具开发创建 ...
- 【Android 源码学习】 init启动
目录 Android 源码学习 init启动 从main.cpp开始 init.cpp 部分逻辑 init启动zygote 属性服务 总结 Android 源码学习 init启动 Android 11 ...
- 【Android 源码学习】Zygote启动原理
Android 源码学习 Zygote启动原理 望舒课堂 Zygote进程启动原理学习记录整理. Zygote简介 Zygote是进程在init进程启动时创建的,进程本身是app_process,来源 ...
最新文章
- linux批量umount脚本,Linux下批量ping某个网段ip的脚本
- 重启nagios有异常提示Starting nagios:This account is currently not available
- Spring Boot 获取 Bean 的 3 种方式!还有谁不会?
- C# 用文本框输入的时间段查询SQL数据库
- RocketMQ--生产者与消费者的简单示例
- FIR IIR滤波器的设计
- 数据分析与挖掘实战-航空公司客户价值分析
- python视频免费百度云-Python开发视频百度云分享
- python杨辉三角函数_Python算法之六:杨辉三角
- Vue中子组件向父组件请求数据时的数据格式问题
- Divide Groups(分组)(二分图染色)
- VC中Radio控件的用法
- 关于主机的思维导图_思维导图可以整理哪些东西?
- Kylo调研总结(二)
- UI设计,扁平化还是拟物化?
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8
- 数据库设置定期删除14天前的数据
- Bash解析器常用快捷键
- 【OR】YALMIP 二阶锥规划
- 文内码转换巨匠增强版 官方版