如何针对Github上某个Android开源项目进行学习?

对于很多开源项目,以PullToRefresh为例,可以直接作为一个project library调用。对于这些项目,应该以什么方式去学习?如果只是单纯调用,自然学不到什么,但整个项目代码量也相对较多,又没法仔细阅读。题主自己写过一些功能简单的项目,想去了解一下更复杂的项目,求各位指点
关注者
937
被浏览
29,461
泻药。在 Android 开源项目源码解析公共模板 @codeKK 开源站 写过分析步骤,这里再介绍下自己的看法:

这里的学习分为快速掌握和全部项目分析,开源项目 Android 一般分为完整项目(App)和工具库,分析的话可概括为总分总:

1 总 ---- 功能了解
了解项目功能(Sample 和文档)以及主要分为几个大块。另外明白你的需求,比如 PullToRefresh 的下拉实现。
PS:(1)大家可以自己先想想如果是自己会怎么去实现这个项目,或许看源码过程中会发现思想碰撞。
(2)如果时间比较紧,可以先 Google 一些该项目相关的文档结合代码看看,帮助快速掌握,不过网上分析文章参差不齐,需谨慎。

2 分 ---- 详细设计
这里正式开始代码分析,分析过程中如果脑子记不住,多动手记下主要类、函数等作用
(1) 入口
对完整 App 来说就是 Manifest 找到入口 Activity,对于工具库从调用接口中判断入口类。然后在 IDE 中一步步深入即可。
PS:一般不错的开源项目规范都比较好,类、函数、变量从名字上就可以了解作用,所以如果需要快速掌握原理的话看觉得是重点的函数即可。

(2) 核心类
在上面的一步步深入过程中已经接触了不少类,大致了解各个类的主要作用

3 总 ---- 总体设计
(1) 功能流程图
上面 2-(1) 的过程完成后已经大致了解项目的流程,不费事的话可以简单画下流程及相关类、函数。
如 Retrofit、Volley 的请求处理流程,Android-Universal-Image-Loader 的图片处理流程图。

(2) 总体设计
整个库分为哪些模块及模块之间的调用关系。
如大多数图片缓存会分为 Loader 和 Processer 等模块。

4 回顾
这时候从 3-2-1(总体设计->流程图->详细设计->功能介绍)反序看,大致就能了解作者最初是怎么设计的了

对于快速分析可以走 1-2(1)-2(2)-3(1) 的步骤。