AndroidAll
项目地址:chiclaim/AndroidAll
简介: Android 程序员的技术栈大全
标签:
内容涵盖绝大部分 Android 程序员所需要的技能:「设计模式」「Flutter」「ReactNative」「Kotlin」「RxJava」「Dagger2」「Retrofit」「OkHttp」「ButterKnife」「Router」「NDK」「Android 架构」「数据结构与算法」「自定义 View」「性能优化」「Android 源码分析」 「经典书籍」等。
我编写了一份详细的 Android 技术栈思维导图,由于 GitHub 图片国内展示不稳定,所以下面使用的树形结构目录。你可以点击查看详细的 -> 思维导图
如果您有任何问题可以提 Issues ,本项目也欢迎各位开发者朋友来分享自己的一些想法和实践经验,欢迎 Pull Request。
-
- 协议
- 操作系统
- Unix / Linux
- Windows
- 数据结构与算法
-
- Java 基础
- 多线程
- I/O
- 集合框架
- JVM 虚拟机
- class 字节码
- class 字节码执行
- 类加载
- JVM 内存区域
- 垃圾回收
- JVM 内存模型
-
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
- IPC 方式
- 熟悉常用的开源框架
- 四大组件
-
UI
- UI 绘制流程及原理
- 事件的传递机制
- 自定义 View
- 屏幕适配
-
Android 虚拟机
- Dalvik
- ART
-
- 程序架构
- 设计模式
- 架构思想
- 概念
- 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
- 2014 年
- 发展历程
- 热修复
- Native Hook
- Dexposed
- AndFix
- HotFix
- Java Multidex
- QZone
- QFix
- Nuwa
- RocooFix
- Java Hook
- Robust
- Aceso
- Dex Replace
- Tinker
- Amigo
- 混合/优化(商业收费)
- Sophix
- Native Hook
- 字节码技术
- gradle plugin
- 全局的 bug 修复
- 日志统计
-
性能优化
- 安装包大小优化
- 启动优化(冷启动、暖启动、热启动)
- 耗电量优化
- UI 性能优化
- XML 布局优化
- 代码优化
- 网络优化
- 线上、线下全链路性能监控
-
- C/C++
- AndroidStudio NDK 开发
- FFmpeg
-
- H5
- Flutter
- Weex
- ReactNative
-
团队
- 如何提高整体的团队水平?
- 如何提高提高团队内代码质量?
- 如何提高团队积极性?
计算机技术
网络协议
数据结构与算法
- 数据结构与算法(十四)深入理解红黑树和 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 网络编程
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
设计原则与架构
设计模式
- 设计模式 ~ 面向对象 6 大设计原则剖析与实战
- 设计模式 ~ 模板方法模式分析与实战
- 设计模式 ~ 观察者模式分析与实战
- 设计模式 ~ 单例模式分析与实战
- 设计模式 ~ 深入理解建造者模式与实战
- 设计模式 ~ 工厂模式剖析与实战
- 设计模式 ~ 适配器模式分析与实战
- 设计模式 ~ 装饰模式探究
- 设计模式 ~ 深入理解代理模式
- 设计模式 ~ 小结
Android 架构
- Android MVP 架构改造~如何重用顶层业务
- 二维火 Android 云收银模块化架构实践
- Android 架构—MVP 架构在 Android 中的实践
- Android-MVVM 架构-Data Binding 的使用
- 使用 repo 管理 Android 组件化项目
Android 性能优化
NDK 开发
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
ButterKnife
- Android 开发之手把手教你写 ButterKnife 框架(三)
- Android 开发之手把手教你写 ButterKnife 框架(二)
- Android 开发之手把手教你写 ButterKnife 框架(一)
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
- 更新中...