自学Android
一、基础篇
1.1 Java篇
Java书籍
- Thinking in Java: 中文版《Java编程思想 》,这是一本非常经典的Java书籍,很多人都说这个书不适合初学者,我记得自己当初看的第一本Java书便是这本书。看完第一遍对Java有了整体的理解,但很多细节没有完全理解,查了资源又看了第二遍,对Java有了更深地理解。再后来一段时间后,能力也有所提升,再拿起这本书又看了第三遍,发现对面向对象有了更深一步的理解,这本书就是适合反复的阅读。
- Effective Java:Java进阶书,这本书采用“条目”的方式来展开的,总提出了78条Java具体的建议,对Java平台精妙之处的独到见解,还提供优秀的代码范例。作为Java进阶之书,对Java水平的提升大有裨益。
- Java concurrency in Practice:中文版《Java并发编程实战》,本书采用循序渐进的讲解方式,从并发编程的基本理论讲起,再讲述了结构化并发应用,性能与测试,最后将显式锁、原子变量、非阻塞算法这些高级主题。对于Java并发这一块算得上是一本很棒的书。
- Java Performance:中文版《Java性能优化权威指南》,Java之父James Gosling推荐的一本Java应用性能优化的经典之作,包含算法结构、内存、I/O、磁盘使用方式,内容通俗易懂,还介绍了大量的监控和测量工具。关于优化都是属于较深的领域,对Java有一定基础后,很有必要了解看看。
Java虚拟机,这是作为进阶Java高手必需有所了解:
- The Java Language Specification,官方Java文档(英文版)
- The Java® Virtual Machine Specification,官方Jvm文档(英文版)
- 深入理解java虚拟机:这是国内关于Java虚拟机讲得非常全面的一本书,从Java GC到Java虚拟机内部实现以及优化策略,作为Java高手非常值得一看的书籍。
1.2 Android基础篇
- 《疯狂Android讲义》作者李刚
- 《第一行代码》:作者郭霖
1.3 Android一手资料
developer.android.com:Android开发官网,下面列举常用的资料:
Android training:Android培训文档;
- 另外由胡凯发起了Android培训课程中文版;对官方文档进行翻译;
Android API指南:Android组件、Manifest配置文件,动画/图像等相关介绍;
Android Tools:性能、测试、Android Studio等各种工具说明文档;
source.android.com:介绍Android开源码相关的内容;
Android Performance Patterns:2015年Google陆续在Youtube上发布的Android性能优化的视频,目前已更新第4季。
- 国内Google组织,优酷上发布了相应的 (中文)Android 性能模式 第四季;
- 另外由胡凯发起了Android性能优化典范中文版文档;对官方视频进行翻译并整理;
android-developers.blogspot.com:Android官方博客,有一些比较不错的feature,博客会第一时间呈现。
1.4 Android资源整理
- android-arsenal.com:作者vbauer整理收集Github中各种开源库与工具,并提供搜索功能,是国外整理得最全面的库;
- Android 开源项目汇总:作者Trinea整理的各种开源库,是国内整理得最全面的库;
- codeKK 开源项目源码分析:从源码的角度,分析Android较流行的优秀开源框架;
- codota.com:这是一个代码搜索引擎,收集的是各种API的优秀示例Java代码。
二、进阶篇
2.1 阅读源码的重要性
2.2 阅读源码的准备
2.3 阅读源码的姿态
android.googlesource.com:Google官方源码,国内无法直接访问,需要翻墙,对于一个程序员来说具备翻墙的能力是非常有必要的。Android源码中包含的库非常之多,下面列举我在看Android源码过程中涉及较多,也是比较常看的一些库:
- android/platform/packages/apps:Android自带的app,比如Email,Camera, Music等,对于应用开发工程师主要关注的目录;
- android/platform/frameworks/base: Java framework,这是framework工程师看得最多的目录;
- android/platform/frameworks/native:Native framework;
- android/platform/art:Art虚拟机;
- android/kernel/common:Android内核,这是驱动工程师最关注的模块;
- android/platform/system/core :核心系统;
- android/platform/libcore:平台的lib库;
另外,对于无法翻墙的朋友来说,还可以通过上Github通过 Android主页 下载Android源码,这些都是定时从Google官方源码的镜像同步而来的。
2.4 优秀资源
- 邓凡平前辈所写博客,条例有序,覆盖了Android系统大部分内容;
- 《深入理解Android》 (卷I,卷II,卷III)
- 罗升阳前辈所写博客,从各个层面介绍Android系统;
- 《Android系统源代码情景分析 》
- 对于邓凡平和罗升阳两位前辈的博客基于Android 2.x或4.x,目前Android已发展到Android 6.0。不管Android如何变化,其核心思维变化并没有很大,所以两位前辈的博客还是很有值得学习和参考的地方。话又说回来,Android经过了几个大版本的迭代,无论是从代码结构还是整体逻辑仍有不少变化。故博主计划写一关于Android 6.0源码系列的博文。
- Gityuan作为Android界新秀,能力尚不及很多前辈,但有一颗乐于分享的心,有一份痴于Android的品质,有一种坚持的态度,已经并一直还在努力奋斗的道路上…
2.5 进阶书籍
- 深入理解Linux内核
- 深入Linux内核架构
- Linux内核设计与实现
- Linux设备驱动程序
- 重构 改善既有代码的设计
- 编程珠玑 (卷1, 卷2)
- 设计模式
- 设计模式之禅
- 人月神话
前4本书都是关于Linux,如果你不是需要从事Linux相关开发,只想提升对Android整体的理解,那么只需看一到两本,对Linux的进程、内存、IO以及驱动有所了解,对CPU调度、进程间通信有所熟悉就基本可以。