Android 程序员的技术栈大全

AndroidAll

项目地址:chiclaim/AndroidAll 

简介: Android 程序员的技术栈大全

更多:作者   提 Bug   

标签:

 

内容涵盖绝大部分 Android 程序员所需要的技能:「设计模式」「Flutter」「ReactNative」「Kotlin」「RxJava」「Dagger2」「Retrofit」「OkHttp」「ButterKnife」「Router」「NDK」「Android 架构」「数据结构与算法」「自定义 View」「性能优化」「Android 源码分析」 「经典书籍」等。

我编写了一份详细的 Android 技术栈思维导图,由于 GitHub 图片国内展示不稳定,所以下面使用的树形结构目录。你可以点击查看详细的 -> 思维导图

如果您有任何问题可以提 Issues ,本项目也欢迎各位开发者朋友来分享自己的一些想法和实践经验,欢迎 Pull Request。

  • 计算机基础

    • 协议
      • OSI 模型、TCP/IP 模型
      • HTTP / HTTP2 / HTTPS
    • 操作系统
      • Unix / Linux
      • Windows
    • 数据结构与算法
  • Java

    • Java 基础
      • 面向对象思想
      • 类和接口
      • 注解与反射
      • 泛型
    • 多线程
      • 多线程通信
        • volatile / synchronized
        • await / notify / notifyAll
      • 线程池
        • 线程池入门 Callable 和 Future
        • 线程池各参数的意义
      • 并发库
        • Lock
        • Condition
        • Semaphore
        • CyclicBarrier
        • CountDownLatch
        • Exchanger
        • ArrayBlockingQueue
      • Java 并发编程
    • I/O
      • 字节流
        • InputStream
          • FileInputStream
          • FilterInputStream
            • BufferedInputStream
            • DataInputStream
            • PushbackInputStream
          • ByteArrayInputStream
          • ObjectInputStream
          • SequenceInputStream
          • PipedInputStream
        • OutputStream
          • FileOutputStream
          • FilterOutputStream
            • BufferedOutputStream
            • DataOutputStream
            • PrintStream
          • ByteArrayOutputStream
          • ObjectOutputStream
          • PipedOutputStream
      • 字符流
        • Reader
          • BufferedReader
          • InputStreamReader
            • FileReader
          • StringReader
          • PipedReader
          • CharArrayReader
          • FilterReader
            • PushbackReader
        • Writer
          • BufferedWriter
          • InputStreamWriter
            • FileWriter
          • PrintWriter
          • StringWriter
          • PipedWriter
          • CharArrayWriter
          • FilterWriter
    • 集合框架
      • List
        • ArrayList
        • LinkedList
        • Stack
        • Vector
        • TreeList
      • Set
        • HashSet
        • LinkedHashSet
        • TreeSet
      • Map
        • HashMap
        • LinkedHashMap
        • WeakHashMap
        • TreeMap
      • Queue
        • PriorityQueue
        • ArrayDeque
      • 并发包
        • ConcurrentHashMap
        • CopyOnWriteArrayList
        • CopyOnWriteArraySet
        • ArrayBlockingQueue
        • LinkedBlockingDeque
        • LinkedBlockingQueue
        • ConcurrentLinkedQueue
        • DelayQueue
    • JVM 虚拟机
      • class 字节码
        • class 字节码的构成
        • class 字节码指令
        • 学习字节码对开发的指导意义
      • class 字节码执行
        • 方法调用
          • 方法调用指令
          • 方法重载解析
          • 动态分派
          • 动态类型语言的支持
        • 方法执行
          • 局部变量表
          • 操作数栈
          • 动态连接
          • 方法返回地址
        • 对象的创建
          • 对象的创建过程
          • 对象的内存布局
          • 对象的访问定位
      • 类加载
        • 类的加载时机
        • 类的加载过程
        • 类加载器
          • 双亲委派机制
          • 自定义类加载器
          • 类加载器死锁问题
          • Class.forName VS ClassLoader.loadClass
      • JVM 内存区域
        • 程序计数器
        • Java 虚拟机栈
        • 本地方法栈
        • Java 堆
        • 方法区
        • 运行时常量池
      • 垃圾回收
        • 什么样的对象可以被回收
        • 什么是 GC Root
        • 垃圾回收算法
          • 标记-清除算法
          • 复制算法
          • 标记整理算法
          • 分代收集算法
        • 常见的垃圾收集器
          • Serial 收集器
          • ParNew 收集器
          • Parallel Scavenge 收集器
          • Serial Old 收集器
          • CMS 收集器
          • Parallel Old 收集器
          • G1 收集器
          • ZGC
        • 垃圾回收相关的内存池
          • Eden Space
          • Survivor Space
          • Old Gen
          • Metaspace
          • Compressed Class Space
          • Code Cache
      • JVM 内存模型
  • Kotlin

    • Kotlin 数据类型、访问修饰符
    • Kotlin 中的 Class 和 Interface
    • Lambda 表达式
      • 定义 Lambda 表达式
      • Member Reference
      • 常用函数 let、with、run、apply 分析
      • Lambda 原理分析
    • 高阶函数
      • 高阶函数的定义
      • 高阶函数的原理分析
      • 高阶函数的优化
    • Kotlin 泛型
      • Java 泛型:不变、协变、逆变
      • Kotlin 中的协变、逆变
      • Kotlin 泛型擦除和具体化
    • Kotlin 集合
      • Kotlin 集合创建方式有哪些
      • Kotlin 集合的常用的函数
      • Kotlin 集合 Sequence 原理
    • Kolint 操作符重载
      • 算术操作符重载
      • 比较操作符重载
      • 集合相关的操作符重载
      • 区间操作符重载
      • 解构操作符重载
      • 属性委托
    • Koltin 和 Java 交互的一些问题
  • Android 基础

    • 四大组件
      • Activity
      • Service
      • ContentProvider
      • BroadcastReceiver
    • Activity 启动模式
      • standard
      • singleTop
      • singleTask
      • singleInstance
    • 常用的布局控件
      • RecyclerView
      • ConstraintLayout
      • WebView
      • ......
    • 数据存储
      • SharedPreferences
      • File
      • SQLite
      • Realm
    • 线程异步
      • Thread
      • AsyncTask
      • IntentService
      • 线程池
    • IPC
      • IPC 方式
        • Bundle
        • 文件共享
        • AIDL
        • Messager
        • ContentProvider
        • Socket
      • 框架
        • Hermes
        • HermesEventBus
    • 熟悉常用的开源框架
  • UI

    • UI 绘制流程及原理
    • 事件的传递机制
    • 自定义 View
    • 屏幕适配
  • 开源库

    • RxJava
    • OkHttp
    • Retrofit
    • Router
    • EventBus
    • Glide
    • Dagger
    • LeakCanary
    • SQLite
    • ......
  • Android 虚拟机

    • Dalvik
    • ART
  • 架构

    • 程序架构
      • MVC
      • MVP
      • MVVM
      • Clean
      • Jetpack
    • 设计模式
      • 6 大设计原则
      • 模板模式
      • 观察者模式
      • 单例模式
      • 建造者模式
      • 工厂模式
      • 适配器模式
      • 装饰器模式
      • 代理模式
      • ......
    • 架构思想
      • 概念
        • IoC 控制反转
        • DI 依赖注入
        • AOP 面向切面
      • 开源方案
        • ASM
        • Javasisit
        • AspectJ
      • 工具
        • APT
        • Gradle plugin
    • 组件化
      • 如何处理组件之间的代码边界
      • 组件之间的 Router 路由
      • 控制反转和依赖注入
      • 如何管理拆分的 Module
    • 插件化
      • 发展历程
        • 2014 年
          • Dynamic-load-apk
        • 2015 年
          • OpenAltas
          • DroidPlugin
          • Small
        • 2016 年
          • Zeus
        • 2017 年
          • Atlas
          • RePlugin
          • VirtualAPK
        • 2019 年
          • Qigsaw
          • Shadow
    • 热修复
      • Native Hook
        • Dexposed
        • AndFix
        • HotFix
      • Java Multidex
        • QZone
        • QFix
        • Nuwa
        • RocooFix
      • Java Hook
        • Robust
        • Aceso
      • Dex Replace
        • Tinker
        • Amigo
      • 混合/优化(商业收费)
        • Sophix
    • 字节码技术
      • gradle plugin
      • 全局的 bug 修复
      • 日志统计
  • 性能优化

    • 安装包大小优化
    • 启动优化(冷启动、暖启动、热启动)
    • 耗电量优化
    • UI 性能优化
      • XML 布局优化
      • 代码优化
    • 网络优化
    • 线上、线下全链路性能监控
  • NDK

    • C/C++
    • AndroidStudio NDK 开发
    • FFmpeg
  • 跨平台

    • H5
    • Flutter
    • Weex
    • ReactNative
  • 团队

    • 如何提高整体的团队水平?
    • 如何提高提高团队内代码质量?
    • 如何提高团队积极性?

计算机技术

网络协议

  • 关于 HTTPS 一篇文章就够了

数据结构与算法

  • 数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
  • 数据结构与算法(十三)平衡二叉树之 AVL 树
  • 数据结构与算法(十二)并查集(Union Find)及时间复杂度分析
  • 数据结构与算法(十一)Trie 字典树
  • 数据结构与算法(十)线段树(Segment Tree)入门
  • 数据结构与算法(九)Set 集合和 BinarySearchTree 的时间复杂度分析
  • 数据结构与算法(八)二分搜索树(Binary Search Tree)
  • 数据结构与算法(七)树和二叉树
  • 数据结构与算法(六)二叉堆、优先队列和 Java PriorityQueue
  • 数据结构与算法(五)深入理解递归
  • 数据结构与算法(四)队列和 Java ArrayDeque 源码剖析
  • 数据结构与算法(三)栈和 Java Stack 源码分析
  • 数据结构与算法(二)线性表之链式存储和 LinkedList 实现
  • 数据结构与算法(一)线性表之顺序存储和 ArrayList、Vector 源码剖析

Java

Java 基础

  • Java 反射技术详解
  • Java XML 解析方式汇总
  • Java ClassLoader 类加载器详解

Java 网络编程

  • Java 网络编程详解(一)
  • Java 网络编程详解(二)

JavaIO

  • Java I/O 流操作(一)System Properties Runtime 类
  • Java I/O 流操作(二)字节流与缓冲流
  • Java I/O 流操作(三)File 文件操作、PrintWriter、SequenceInputStream
  • Java I/O 流操作(四)对象的序列化

Java 多线程

  • Java 多线程(一)线程间的互斥和同步通信
  • Java 多线程(二)同步线程分组问题
  • Java 多线程(三)线程池入门 Callable 和 Future
  • Java 多线程(四)ThreadPoolExecutor 线程池各参数的意义
  • Java 多线程(五)Lock 和 Condition 实现线程同步通信
  • Java 多线程(六)Semaphore 实现信号灯
  • Java 多线程(七)CyclicBarrier 同步的工具类
  • Java 多线程(八)CountDownLatch 同步工具类
  • Java 多线程(九)Exchanger 同步工具类
  • Java 多线程(十)ArrayBlockingQueue 阻塞队列
  • Java 多线程(十一)JDK 同步集合

Java 集合框架

  • 数据结构与算法(十四)深入理解红黑树和 JDK TreeMap 和 TreeSet 源码分析
  • 数据结构与算法(十三)平衡二叉树之 AVL 树
  • 数据结构与算法(十二)并查集(Union Find)及时间复杂度分析
  • 数据结构与算法(十一)Trie 字典树
  • 数据结构与算法(十)线段树(Segment Tree)入门
  • 数据结构与算法(九)Set 集合和 BinarySearchTree 的时间复杂度分析
  • 数据结构与算法(八)二分搜索树(Binary Search Tree)
  • 数据结构与算法(七)树和二叉树
  • 数据结构与算法(六)二叉堆、优先队列和 Java PriorityQueue
  • 数据结构与算法(五)深入理解递归
  • 数据结构与算法(四)队列和 Java ArrayDeque 源码剖析
  • 数据结构与算法(三)栈和 Java Stack 源码分析
  • 数据结构与算法(二)线性表之链式存储和 LinkedList 实现
  • 数据结构与算法(一)线性表之顺序存储和 ArrayList、Vector 源码剖析
  • ArrayBlockingQueue 阻塞队列

Java 虚拟机

  • 深入理解 Java 虚拟机(一)~ class 字节码文件剖析
  • 深入理解 Java 虚拟机(二)~ 类的加载过程剖析
  • 深入理解 Java 虚拟机(三)~ class 字节码的执行过程剖析
  • 深入理解 Java 虚拟机(四)~ 各种容易混淆的常量池
  • 深入理解 Java 虚拟机(五)~ 对象的创建过程
  • 深入理解 Java 虚拟机(六)~ Garbage Collection 剖析

Kotlin

  • Kotlin 基础入门详解
  • Kotlin 操作符重载详解
  • 从 Java 角度深入理解 Kotlin

设计原则与架构

设计模式

  • 设计模式 ~ 面向对象 6 大设计原则剖析与实战
  • 设计模式 ~ 模板方法模式分析与实战
  • 设计模式 ~ 观察者模式分析与实战
  • 设计模式 ~ 单例模式分析与实战
  • 设计模式 ~ 深入理解建造者模式与实战
  • 设计模式 ~ 工厂模式剖析与实战
  • 设计模式 ~ 适配器模式分析与实战
  • 设计模式 ~ 装饰模式探究
  • 设计模式 ~ 深入理解代理模式
  • 设计模式 ~ 小结

Android 架构

  • Android MVP 架构改造~如何重用顶层业务
  • 二维火 Android 云收银模块化架构实践
  • Android 架构—MVP 架构在 Android 中的实践
  • Android-MVVM 架构-Data Binding 的使用
  • 使用 repo 管理 Android 组件化项目

Android 性能优化

  • Android 性能优化—内存篇

NDK 开发

  • Android NDK ~ 基础入门指南
  • Android NDK ~ Java 和 Native 交互

Android 框架

RxJava

  • RxJava create 操作符的用法和源码分析
  • RxJava map 操作符用法详解
  • RxJava flatMap 操作符用法详解
  • RxJava concatMap 操作符用法详解
  • RxJava onErrorResumeNext 操作符实现 app 与服务器间 token 机制
  • RxJava retryWhen 操作符实现错误重试机制
  • RxJava 使用 debounce 操作符优化 app 搜索功能
  • RxJava concat 操作处理多数据源
  • RxJava zip 操作符在 Android 中的实际使用场景
  • RxJava switchIfEmpty 操作符实现 Android 检查本地缓存逻辑判断
  • RxJava defer 操作符实现代码支持链式调用
  • combineLatest 操作符的高级使用
  • RxJava 导致 Fragment Activity 内存泄漏问题
  • interval、takeWhile 操作符实现获取验证码功能
  • RxJava 线程的自由切换

Dagger2

  • Android Dagger2(二)源码分析-对象是如何被注入的
  • Android Dagger2(一) Dagger 使用详解

ButterKnife

  • Android 开发之手把手教你写 ButterKnife 框架(三)
  • Android 开发之手把手教你写 ButterKnife 框架(二)
  • Android 开发之手把手教你写 ButterKnife 框架(一)

Android WebView

  • Android WebView 文件上传及自定义文件选择器

跨平台开发

Flutter

  • (一)Flutter 学习之 Dart 变量和类型系统
  • (二)Flutter 学习之 Dart 展开操作符 和 Control Flow Collections
  • (三)Flutter 学习之 Dart 函数
  • (四)Flutter 学习之 Dart 操作符、控制流和异常处理
  • (五)Flutter 学习之 Dart 面向对象
  • (六)Flutter 学习之 Dart 异步操作详解
  • (七)Flutter 学习之开发环境搭建
  • (八)Flutter 和 Native 之间的通信详解
  • (九)Android 项目集成 Flutter 模块
  • (十)Flutter FutureBuilder 优雅构建异步 UI
  • 更新中...

经典书籍

  • 《Android 开发艺术探索》
  • 《Android 源码设计模式》
  • 《Android 自定义控件开发入门与实战》
  • 《Android 软件安全与逆向分析》
  • 《Android 群英传》
  • 《Java 编程思想》
  • 《Java 核心技术:卷 I 基础知识》
  • 《Java8 实战》
  • 《重构:改善既有代码的设计》
  • 《Java 并发编程实战》
  • 《深入理解 Java 虚拟机》
  • 《Effective Java 第二版》
  • 《Java 与模式》
  • 《代码整洁之道》
  • 《剑指 Offer 名企面试官精讲典型编程题》
  • 《阿里巴巴-深入探索 Android 热修复技术原理》
  • 《Kotlin In Action》
  • 《HTTP 权威指南》
  • 陆续整理网盘开放中...

你可能感兴趣的:(Android 程序员的技术栈大全)