謝邀!
Android方向的話,細分的領域
1、Android高級UI
如果想在這方向進行進階的話,一個高級UI需要達到什么水平呢,就是UI給你任何一個效果,你都能用代碼把他高質量的實現出來,在性能優化方面也需要下點功夫,做出來的效果又流暢又不費電才是一個Android高級UI改干的事,需要具備的儲備知識有哪些呢?
1、需要熟悉WebView交互,熟悉WebView的使用和原理,js與Android代碼交互,多進程的WebView實踐,熟悉WebView與Native的通信框架和原理
2、MeterialDesignApp的設計,NestScrollView的原理,自定義自己的Tablayout
3、ViewGroup,View的繪制原理,繪制流程,MeasureSpec和LayoutParams的使用和原理
4、UI基礎的掌握,Android的坐標系和角度和顏色等
5、自定義View事件分發機制,多點觸控,滑動沖突,手勢
6、Canvas畫布圖層,畫幾何圖形,Path貝塞爾曲線,文字的繪制
7、屬性動畫,視圖動畫
8、ViewPager,RecycleView還有各種布局的原理
9、性能優化,布局檢測與優化,內存優化,耗電優化,屏幕適配,OOM的產生及解決辦法,ANR的解決
2、AndroidNDK方向
NDK:(NativeDevelopmentKit),原生開發工具包是一組可以讓您在Android應用中利用C和c++代碼的工具,可用以從您自己的源代碼構建,或者利用現有的預構建庫.
使用場景:
NDK本身對許多類型的Android應用沒什么價值,因為它不可避免的增加開發過程復雜性,所以通常不值得使用.如果需要執行以下操作,或許有用:
- 從設備獲取卓越性能以用于計算密集型應用,例如游戲或者物理模擬.
- 重復使用您自己或者其他開發者的C或c++庫.
- 在平臺之間移植應用.
從事AndroidNDK開發需要掌握的知識
1、C與C++
2、JNI開發
3、Native開發工具,交叉編譯移植,Cmake,MakeFile,靜態庫動態庫
4、Linux編程
NDK下邊還有細分領域
音視頻開發:
1、多媒體系統,手機攝像頭的開發,音頻采集和播放
2、FFmpeg音視頻編解碼,I幀P幀B幀的解碼原理,音視頻同步,H264視頻編碼,Faac音頻編碼,NativeWindow繪制,
3、視頻的視覺處理,美顏濾鏡,視頻變速,抖音特效
3、流媒體協議。RTMPWebRTc
圖像處理:
1、圖像預處理,灰度化,二值化,高斯模糊,形態學操作:腐蝕,膨脹開閉操作,輪廓查找,人臉檢測,身份證識別,車盤號識別
物聯網開發方向:
智能家居串口開發,WIFI模塊,藍牙,MODBUS協議之類的
3、Android架構師
架構師所需的知識就更多了
1、Java基礎要足夠牛逼,并發編程,JVM原理,內存分析,反射和類加載機制,高效IO,字節碼插樁技術,理解AndroidDavilkART,
2、高級UI和FrameWork內核,Binder機制,Handler機制,DalvikVM進程系統,AMS,WMS,Activity啟動流程,Activity棧管理
3、數據結構,設計模式,設計原則,算法
4、性能優化
5、開發效率優化,Gradle自動化構建
6、各種開源框架原理
7、深入理解MVC,MVP、MVVM
8、還要學習關于跨平臺的東西,Flutter,微信小程序,Hybrid開發