# Android App 开发技能图谱
## 操作系统
- Windows/MacOSX/Linux
## 编程语言
- Java
- HTML/JS (Hybrid/Web App)
- C/C++ (NDK)
- SQL (DB)
- Kotlin
## 开发工具
- IDE
* Android Studio
* Eclipse
- 调试工具
* 网络调试
+ Charles
+ Wireshark
+ Fiddler
+ tcpdump
+ Paw/Postman
* 内存分析
+ monitor
+ MAT
* Android tools
+ adb
+ draw9patch
+ hierarchyviewer
+ uiautomatorviewer
- 版本管理
* Git
+ Git命令
+ Github/GitLab
* SVN
- CodeReview
* Gerrit
* Github pull request
- Bug/任务管理
* Redmine
* JIRA
* Bugzilla
* Teambition
* Tower
- 编译工具
* Gradle
- 持续集成
* Jenkins
* Travis CI
- 应用分发
* 蒲公英
* fir.im
------
## App基础
- 基本组件
* Activity
* Service
* Content Provider
* Broadcast Receiver
* Intent/Intent Filter
* App Manifest File
- UI
* Layouts
* Widgets
* Resources
* Animations
* 设备适配
- Connectivity
* WiFi
* Mobile网络
* 网络状态监听
- MultiMedia
* Audio/Video
* Camera/Gallery
- GPS&Location&Map
* 系统定位
+ GPS定位
+ Network定位
* 3rd Map定位
+ 百度Map
+ 高德Map
## App进阶
- Process&Thread
* Process
+ Linux进程
+ App进程原理
* AIDL
+ 实现方式
+ 原理
* Handler/Looper/MQ/Thread
* Loader
* AsyncTask
- 性能优化
* ANR
* 布局层级性能优化
- 内存优化
* 内存检测工具
* 内存分析工具
* Bitmap优化
* 内存泄露查找及分析
- 网络优化
* API优化
* 低网速下优化
* 流量使用优化
+ 判断当前网络类型
+ 使用缓存
- 单元测试
## App高级
- 相关原理熟悉
* Activity
+ 启动流程
+ 生命周期回调原理
+ 与View/Window的关系
+ 与Fragment的关系
* View/Window
+ View/Window关系
+ View渲染
+ View事件分发处理流程
* 编译打包
+ 编译打包原理
+ 逆向工程分析
+ 热修复
- Hybrid App
* 与Native App的异同
* 主流框架
+ PhoneGap
+ ionic
+ React Native
- 架构能力
* 架构
+ MVC
+ MVP
+ MVVM
+ Flux
+ Clean Architecture
* App框架
+ 分包
+ 分层
* 设计模式
+ OOD原则
+ 常用设计模式运用
- ART&Dalvik
* AOT compilation
* GC
* Bytecode&.Dex
- 自动化测试
* monkey/monkey runner
* UIAutomator
* Espresso
* Robotium
## 扩展学习
- 响应式编程
* Rx
+ RxJava
+ RxAndroid
+ RxBinding
* Agera
- 主流开源库
* 快速开发
+ Android Annotation
+ ButterKnife
* Views
+ 太多
* HTTP模型
+ Retrofit
+ OkHttp
+ Volley
* 图片处理
+ Glide
+ Fresco
+ Picasso
+ UIL
* 依赖注入
+ Dagger2
* 数据库
+ ORMLite
+ GreenDAO
+ Realm
+ Sugar
* 辅助
+ Logger
+ LeakCanary
+ DbInspector