【职业学习规划】Android架构师方向

# 程序员职业发展规划
【技术方向】5年 - Android高级工程师 阿里P6
Android工程师职业发展方向规划:
http://naotu.baidu.com/file/1ab611f8592ee4b6a18b8592f4e78a51?token=4e73adda2edacf37
http://naotu.baidu.com/file/82fda7a3ad479fbff45908c463fdcd62?token=8ecbfaab1cc83b72

--------------------------------------------------------------------------------------------------------------
-------------------- FMBP 知识体系 == 【官方文档 + 名著 + 源码 + 实践】----------------------------
--------------------------------------------------------------------------------------------------------
【F、移动端】
指导思想:《我的职业是前端工程师》
https://ued.party/

#1【大前端 - 混合/跨平台开发】
- 【 Hybrid == Webview + html5/js/css3/】
给Android开发者看的前端教程
https://blog.csdn.net/lfdfhl/column/info/17220

- 【快应用】
快应用开发
微信小程序


#2【 移动端原生】
- 【Android 相关】
###1 Kotlin
https://time.geekbang.org/course/intro/105

###2 Groovy&Gradle 与 Maven 打包插件与仓库
Gradle官方教程
https://gradle.org/resources/

Gradle学习博客
https://blog.csdn.net/innost/article/details/48228651
https://blog.csdn.net/lastsweetop/article/details/79053746

《Maven实战》

a.学习Gradle核心技术 --
自定义配置项目构建过程 ;
implementation - api
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa

c. gradle 插件如何hook打包过程,从而实现功能,如减少apk大小,dex分包等

- 【IOS】
学习路线:https://time.geekbang.org/column/article/85326
OC
Swift

###3 Ioc、Aop 与 AspectJ
https://blog.csdn.net/innost/article/details/49387395
https://juejin.im/post/5bd6ce8f51882527dd7f6f03

###4 NDK -- Linux / C / C++ / NDK 开发工具链
http://kms.sys.wanmei.net/pages/viewpage.action?pageId=29239649
官方文档 -- 向项目添加C/c++代码
https://developer.android.com/studio/projects/add-native-code?utm_source=android-studio
https://my.oschina.net/caipeng/blog/2243613
《Linux 系统编程》

#3 【移动端区块链游戏与社交应用】
经营类、虚拟世界
step1: https://cryptozombies.io/
step2 LOOM Unity SDK:https://medium.com/loom-network-chinese/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E8%80%85%E4%BB%AC%E6%B3%A8%E6%84%8F%E5%95%A6-%E4%BD%BF%E7%94%A8loom-unity-sdk-%E4%B8%8D%E7%94%A8%E4%BA%86%E8%A7%A3%E5%8C%BA%E5%9D%97%E9%93%BE%E7%BC%96%E7%A8%8B%E4%B9%9F%E8%83%BD%E5%BC%80%E5%8F%91%E5%8C%BA%E5%9D%97%E9%93%BE%E6%B8%B8%E6%88%8F%E4%BA%86-4f6de4de3baa
step3:区块链技术栈
C++
Golang

# 【M、主方向 - Android内核与架构】
##1 编译过程、运行环境
###1 Android studio 编译、打包过程核心技术
https://juejin.im/post/5a69c0ccf265da3e2a0dc9aa
APK签名机制
https://www.jianshu.com/p/286d2b372334
manifest及资源文件merge过程
https://developer.android.com/studio/build/manifest-merge?hl=zh-cn
Asset 资源文件加密
https://www.jianshu.com/p/97bfe485e179

aapt/dx工具、.Java -> .class -> .dex 、方法签名
压缩、ProGuard完全解析,签名流程梳理 , smali

 

###2 Java虚拟机原理
极客帮:https://time.geekbang.org/column/intro/108
Android 开发了解 Android虚拟机或者 JVM方法:
https://www.zhihu.com/question/63720280/answer/212645992
ref:深入理解Android之Java虚拟机Dalvik:
http://blog.csdn.net/Innost/article/details/50377905?utm_source=gank.io%2Fxiandu&utm_medium=website
ref:Dalvik与ART
https://www.jianshu.com/p/58f817d176b7
源码角度虚拟机原理 -- 类加载过程
https://www.jianshu.com/p/cb39b1797326
http://www.importnew.com/17770.html
https://www.cnblogs.com/wtzbk/p/7985156.html
JVM 内存管理-GC
https://blog.csdn.net/sd4015700/article/details/50109939
深入理解java内存模型系列文章

[问]如果想替换第三方jar中的某个class文件,或者在开发时你的class文件与jar中的重名,但是你想使用自己的应该如何解决?如果你替换掉某个方法又该怎么解决?


###3 插件化原理:DroidPlugin VirtualApp、DynamicLoadAp
<深入探索Android热修复技术原理7.3Q.pdf>
深入理解Android 插件化技术
https://zhuanlan.zhihu.com/p/33017826
https://zhuanlan.zhihu.com/p/39804097

#### hook技术
ClassLoader核心原理
Dex文件结构及加载原理
hook一个无需注册的Activity实战
hook一个主题,实现资源的远程加载实战
@target theme主题换肤框架手写实践

#### Xposed详解
http://blog.csdn.net/Innost/article/details/50461783?utm_source=gank.io%2Fxiandu&utm_medium=website
https://www.wrbug.com/

#### 插件化框架原理
http://a.codekk.com/detail/Android/FFish/DynamicLoadApk%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
··
#### 热修复原理
AndFix 、SoPhix、Tinker
http://mp.weixin.qq.com/s?__biz=MzIxNzU1Nzk3OQ==&mid=2247487017&idx=1&sn=8abaad1612f871980c042f0fd214975d&chksm=97f6b09da081398b63c2dcd7642b858229ea7c82246af493041ff325c25beb01879bf24d6a0b&mpshare=1&scene=23&srcid=0608yqnuQcXKT2xEhq29c2AN#rd


##2 架构师发展方向(架构重构与设计思想)
《 重构,改善既有代码的设计》
《clean code》
《十大开源库-- 视频课》

###1 面向对象设计思想 UML(类图、时序图)
《Thinking in UML》
UML及starUML工具
《设计模式之禅》

###2 主流框架设计思想
*** 【主流框架】网络框架 与 Json解析框架
核心问题
1)多线程断点续传原理
2)线程池管理

## 网络框架
### Volley
### okHttp
https://www.jianshu.com/p/230e2e2988e0
### retrofit

## json解析框架
Gson
fastJson

*** 【主流框架】图片加载
核心问题
LRUCache/DiskLruCache原理
图片加载原理

### Glide 使用与原理,及坑
Glide 指导文档
https://mrfu.me/2016/02/27/Glide_Getting_Started/
Glide好处 -- 与PIcasso、Fresco对比
https://www.jianshu.com/p/ca5ce4444c37
Glide 详细使用
https://blog.csdn.net/sgiceleo/article/details/64440783
http://www.jianshu.com/p/e78407a18716
https://mrfu.me/2016/02/27/Glide_Displaying_Gifs_&_Videos/
Glide 使用优化
http://m.blog.csdn.net/plokmju88/article/details/78141155


### Picasso与Glide对比
https://square.github.io/picasso/

### 【实战】手写网络加载框架
https://www.jianshu.com/p/3df395d8a6bc

*** 【主流框架】EventBus 框架原理
饿了么进程间事件分发库 -- HermesEventBus
事件分发基于EventBus,IPC基于Hermes
***【技术专题】 Jetpack -- LiveData
*** 【主流框架】 RxJava / RxAndroid 框架学习
http://mp.weixin.qq.com/s?__biz=MzIwMzYwMTk1NA==&mid=2247489050&idx=1&sn=4b9edc057cc6913dae1580e24d911e37&chksm=96cdb757a1ba3e41ee902bb12ee437ab3d93b64a5fefe030c5aa82184a6ebc63ec669178d6a1&mpshare=1&scene=23&srcid=0102Tu33NEz2xONdd4UzF1pC#rd
https://juejin.im/book/5a09997cf265da432002bf6a

*** 【主流框架】数据库框架
### 开源框架 GreenDao 使用与原理
### ORMLite
### Room

*** 【主流框架】 依赖注入框架
Dagger2
https://google.github.io/dagger/

ButterKnife

 

###3 项目架构
架构MVC、MVP、MVVM、jetpack
官方组件:https://github.com/googlesamples
1)MVVM --
kotlin+MVVM+databinding+AOP+dagger2+RxJava+Retrofit
PaoNet
https://www.jianshu.com/p/77e42aebd7bb
Android Architecture Component - Jetpack
https://developer.android.com/jetpack/docs/guide


2)KotlinMvp
kotlin+MVP+RxJava+Retrofit

3)组件化架构使用 -- ARouter、CC
基于路由框架的Router组件化框架参考开源项目 AcgClub
基于组件总线的CC组件化框架 -- CC
基于路由思想的美团WMRouter
https://tech.meituan.com/meituan_waimai_android_open_source_routing_framework.html

 

 

##3 Android 技术专题与系统源码
<深入理解android 卷一.pdf>
<深入理解android 卷二.pdf>
<深入理解android 卷三.pdf>
《Android开发艺术探索》
https://www.cnblogs.com/duguguiyu/category/112850.html
《 Android源码与设计模式》


***【技术专题】 通信机制 -- 线程通信与异步

###ThreadLocal 原理
ThreadLocal如果引用一个static变量是不是线程安全的
### 消息机制 -- Handler、MessageQueue
<深入理解android 卷三.pdf> 第二章
<深入理解android 卷二.pdf> 第二章
http://www.jackywang.tech/AndroidInterview-Q-A/chinese/android/Handler%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86.html

### Thread/AsyncTask/HandlerThread/IntentService/RxJava源码分析
https://blog.csdn.net/lyz_zyx/article/details/60598656
https://blog.csdn.net/lyz_zyx/article/details/60869762

 

***【技术专题】 Android Framework 核心服务源码 与 设计模式
## 通信机制
### Handler通信原理与框架手写

### Binder机制/AIDL
https://xiaozhuanlan.com/topic/9405168327
《深入理解Android》卷一二三
http://www.jackywang.tech/AndroidInterview-Q-A/chinese/android/%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E8%AE%AF%E6%9C%BA%E5%88%B6Binder.html

### Intent 数据传递与内核
Bundle
Parcleable
Serialize
隐式调用
Intent 是如何实现 Activity、Service 等之间的解耦合的?

### Socket通信原理

## 组件工作原理
《Android开发艺术探索》
《深入理解android 卷二》 第六章 AMS

Activity
https://www.jianshu.com/p/8d58804d4bf4
https://www.jianshu.com/p/9ecea420eb52
《深入理解Android》

Broadcast
LocalBroadcastManager

Service
生命周期及AMS关系
两种启动方式原理
Service进程优先级调优与实践

Context 原理解析
application动态切换,让一个应用有两个application实现加固与安全

Fragment 内核
调用栈管理
生命周期管理源码

## 应用管理 -- apk安装过程
<深入理解android 卷二.pdf> 第四章 PackageManagerService

## 进程管理、任务管理 、内存管理
### Android中进程内存的分配,能不能自己分配定额内存
https://www.cnblogs.com/ymczxy/p/4710991.html

## WebView 与 WebKit 内核模块
《深入理解Android:WebKit卷+(移动开发)》

@target WebView&native 通信框架手写实践

## 权限机制

***【技术专题】 View 绘制 & 高级动画绘制、动画原理
https://blog.csdn.net/lfdfhl/article/details/78566702
### 自定义View过程 -- 实战技能
http://hencoder.com/

### View绘制原理--系统是如何调用到onMessure,onDraw等方法的

https://blog.csdn.net/wangwei708846696/article/details/80539230
https://blog.csdn.net/u012124438/article/details/71435787?utm_source=blogxgwz2

### View事件分发与滑动冲突

### 属性动画
属性动画使用、差值器&估值器
Animate Vector Drawables(矢量动画))、
SVG(SVG概述、SVG图片使用实例、SVG动画使用实例)、
GIF动画引擎框架、
自定义动画框架
MaterialDesign动画(Touch feedback(触摸反馈)、
Reveal effect(揭露效果)、
Activity transitions(Activity转换效果)、
Curved motion(曲线运动)、

### View System -- 绘制与优化原理
《Android开发艺术探索》
<深入理解android 卷一.pdf> 8(视图绘制原理)
<深入理解android 卷三.pdf> 第四、五、六章 Window绘制、输入系统

DisplayManager
WindowManager
AcitivtyManager
Surface vs SurfaceFlinger

[实战]
1) 评分控件的实现SVG:
https://www.jianshu.com/p/67e8c0555d8d
RichPath
3)RecycleView https://mp.weixin.qq.com/s/S7BJAUCQeSHQ4uPqd3N4qA
4)NestedScroll
5) 水波纹动画--腾讯课堂
https://ke.qq.com/webcourse/index.html#cid=130901&term_id=100146035&taid=1984214761340757&vid=c1424dt669v
SurfaceView/GLSurfaceView/TextureView/SurfaceTextture
https://www.cnblogs.com/renhui/p/8258391.html

 

***【技术专题】 Jetpack


#【B、基础知识】
##1 java核心技术
Java-Interview
Java并发编程的总结与思考
一张图让你看懂JAVA线程间的状态转换
Java并发编程:Thread类的使用
Java多线程编程总结
锁机制:synchronized、Lock、Condition
Java 中的锁
深入分析ConcurrentHashMap
Java反射机制原理 -- http://www.importnew.com/23902.html
《java 并发艺术》
《java 核心》
https://mp.weixin.qq.com/s/fXEYulgiTNgun0pJswRhXA
Java 个版本特性与变化

##2 数理逻辑、数据结构、算法 与 人工智能
慕课网算法课程
https://coding.imooc.com/class/chapter/71.html#Anchor
极客帮 - 《人工智能入门课》
https://time.geekbang.org/column/intro/62
程序员数学课
https://time.geekbang.org/column/article/71139

百度云盘--玩转算法面试题视频教程)
leetcode
《王晓华-算法的乐趣》

算法 + 人工智能

 


##3 网络协议、操作系统
### 网络协议
《Tcp ip 第五版》
《图解Http》
HTTP协议详解(真的很经典) - Hundre - 博客园 - http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html?utm_source=qq&utm_medium=social

### 通信工程 - IM入门知识
http://www.52im.net/thread-2406-1-1.html

### 操作系统


### 密码学
《经典密码学与现代密码学》

 

【P、项目实践】
功能开发与维护
核心技术点学习
优化

##1 项目性能与安全
https://time.geekbang.org/column/intro/142
《Android移动性能实战》
《Android应用性能优化最佳实践》
《性能之巅》
https://medium.com/googleplaydev/how-to-optimize-your-app-for-android-go-edition-f0d2bedf9e03
https://developer.android.com/topic/performance/
Android官方视频:Google发布于Youtube的官方Android性能优化的视频。
https://nanchen2251.github.io

### 卡顿场景
UI -- 绘制、刷新
应用启动--安装启动、冷启动、热启动
页面跳转--页面间跳转、前后台切换
事件响应--按键、系统事件、滑动

### 内存泄漏&OOM 优化
Heap Snapshot
MAT工具

### 电量优化
消耗机制
优化工具
battery-historian

### 反编译、抓包调试工具
https://blog.csdn.net/Android_Tutor/article/details/5724435
AndroidCrackTool 2
Stecho
Fiddle2

##2 代码优化 --从编译和维护的角度:稳定性、拓展性、可维护性
《Effective Java》
《Clean Code》
《重构:改善既有代码的设计》
《整洁代码之道》

 

##3 项目适配与测试
### android适配 : 屏幕适配、机型适配方案、SDK版本变化与适配方案
https://www.cnblogs.com/soaringEveryday/p/4835839.html

### 测试
Junit、Expresso

### Java 诊断利器
arthas

### Git 使用
掘金小册
https://juejin.im/book/5a124b29f265da431d3c472e

 

转载于:https://www.cnblogs.com/hxzhang/p/10649286.html

你可能感兴趣的:(【职业学习规划】Android架构师方向)