工欲善其事,必先利其器。只有打好了基础,才能自如地应对 Android Framework 的学习,这些基础知识主要包括了:
- 熟悉 Linux 的基本使用
- 熟悉 Linux Shell,了解 Python Go
- 熟悉 C 和 C++
- 熟悉 Java
- 熟悉 Make Soong Bazel CMake 软件构建工具
- 熟悉 Linux 系统编程
- 了解 Linux kernel 和操作系统基础
接下来会推荐一些学习资料,我也会系统地分享基础方面的学习,并将其作为学习 Android Framework 的前置教程,同学们可以根据自己的情况按需学习。
Linux 的使用
Android Framework 在 Ubuntu 下开发,所以第一步得会用 Linux,主要是掌握常用的命令,以及一些常见的操作。
计划分享文章:
- Ubuntu 使用快速入门
Shell Python Go 工具类编程语言
Android Framework 中有很多 shell 脚本,主要是和编译有关的,要读懂这些脚本,需要有比较好的 Linux shell 脚本编程能力,推荐学习《Linux Shell核心编程指南》
计划分享文章:
- Linux Shell 编程入门
- Linux Shell 编程进阶
Android 的编译系统还用到了 Go 语言,所以我们得对 Go 的使用有基本的了解
计划分享文章:
- Go 语言入门
- Go 语言进阶
Repo 是一个 Python 脚本,对 git 的使用进行了封装,所以 Python 的使用我们也需要有基本的了解。
计划分享文章:
- Python 语言入门
- Python 语言进阶
以上内容 Linux Shell 需要熟练掌握,Go 和 Python 了解即可
C 和 C++
C/C++ 这个不用说,native 层基本都是 C/C++ 代码,这部分必须熟练掌握,推荐几本我觉得还不错的书:
- 《C语言非常道》 推荐使用这本书入门 C 语言
- 《一站式学习C编程》 非常全面的一本 C 语言教材,推荐和 《C语言非常道》 同步阅读
- 《嵌入式C语言自我修养》 学完了上面两本,再看看这本书,从语言角度夯实一下计算机基础
- 《21天学通C++(第8版)》,C++ 推荐通过这本书入门
计划分享文章:
- C 语言语法入门1
- C 语言语法入门2
- C 语言与指针
- C 语言面向对象编程
- C 语言模块化编程
- GUN C 扩展语法
- ARM 汇编基础
- C 程序的编译、链接、安装和运行
- C++ 语法入门1
- C++ 语法入门2
- C++ 语法入门3
- C++ STL 入门
- C++ 多线程编程
Java
Java 我就不献丑了,同学们应该已经非常熟悉了!
JNI
Framework 中,使用了大量的 JNI 技术,但是我没有找到系统讲解 JNI 的书籍,后面我会在基础部分写一个系列教程来讲解 JNI 的使用和使用过程中需要注意的事情。
计划分享文章:
- JNI 编程核心基础
- JNI 中处理 Java 异常
- C/C++ 子线程调用 Java 方法
- JNI 调用优化
Make Soong Bazel 软件构建工具
Make Soong 是现在 Android 源码中混合使用的构建工具,需要熟悉。
Bazel 是未来 Android 将使用的构建工具,空闲的时候可以着手了解了。
计划分享文章:
- Makefile 基础入门
- Soong 与 AOSP 编译系统
- Bazel 基础入门
- Bazel 与 AOSP 编译系统
Linux 系统编程
Android 构建于 Linux 之上,对于 Linux 系统编程需要非常熟悉。
计划分享文章:
- 文件系统与文件IO
- 内存映射
- 进程管理
- 进程间通信
- Linux 多线程编程
Linux kernel 和操作系统基础
这部分主要分享下面的内容:
- Linux 内核开发环境搭建
- Linux 内核模块
- 操作系统接口
- 进程管理,进程调度与死锁
- Linux 内存管理
- 设备管理
- 文件系统
总结
要学得东西很多,慢慢来,总会学完的。
同学们可以根据自己的情况按需学习。
目前还是以分享 Android Framework 内容为主,基础部分会陆续分享出来。