【職業學習規劃】Android架構師方向

# 程序員職業發展規劃
【技術方向】5年 - Android高級工程師 阿里P6
Android工程師職業發展方向規劃:
http://naotu.baidu.com/file/1ab611f8592ee4b6a18b8592f4e78a51?token=4e73adda2edacf37
http://naotu.baidu.com/file/82fda7a3ad479fbff45908c463fdcd62?token=8ecbfaab1cc83b72css

--------------------------------------------------------------------------------------------------------------
-------------------- FMBP 知識體系 == 【官方文檔 + 名著 + 源碼 + 實踐】----------------------------
--------------------------------------------------------------------------------------------------------
【F、移動端】
指導思想:《個人職業是前端工程師》
https://ued.party/html

#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/105html5

###2 Groovy&Gradle 與 Maven 打包插件與倉庫
Gradle官方教程
https://gradle.org/resources/java

Gradle學習博客
https://blog.csdn.net/innost/article/details/48228651
https://blog.csdn.net/lastsweetop/article/details/79053746android

《Maven實戰》css3

a.學習Gradle核心技術 --
自定義配置項目構建過程 ;
implementation - api
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fac++

c. gradle 插件如何hook打包過程,從而實現功能,如減小apk大小,dex分包等git

- 【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等方法的
<Android開發藝術探索>
https://blog.csdn.net/wangwei708846696/article/details/80539230
https://blog.csdn.net/u012124438/article/details/71435787?utm_source=blogxgwz2

### View事件分發與滑動衝突
<Android開發藝術探索>

### 屬性動畫
屬性動畫使用、差值器&估值器
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> 第4、5、六章 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

相關文章
相關標籤/搜索