達到什麼樣的程度才算精通 Android開發?
謝邀……港真,看到這個邀請的時候,我的表情是這樣的:
先不說「精通」二字本身是不是玄學。可能很多人都忽略了,Android是一整套操作系統,而且還是開源操作系統,而且還是大量優秀的Google工程師一起才能開發、維護的過來的系統,想要一個人達到「精通Android開發」,想必無異於痴人說夢——Android系統可不只有手機系統,還有手錶系統Android Wear和物聯網系統Android Things,以一人之力想要達到精通Android開發,基本上不太現實。
既然如此,細分出一些子項,比如精通Android手機應用開發、精通Android 虛擬機開發,我個人感覺這個範圍還是略大了些。
那麼我們把範圍再縮小一點,再細分出子項,比如 精通Android手機應用的UI開發 怎麼樣?這樣看來,似乎可以找到一些標準,比如:
- 熟悉Android UI相關源碼,理解整個View體系:View Tree的創建過程、ViewRoot的工作方式,ViewTree的遍歷時機和流程、View中的消息傳遞。理解Canvas繪圖過程
- 能夠獨立實現複雜且高效的UI布局和交互動畫。
- 理解Android繪製機制,能夠獨立分析、統計和優化UI卡頓。
- 熟悉主流UI庫……
- Etc.
唔……這樣看,似乎就不那麼遙不可及,無從下手了對嘛?但是從學習、實踐、總結、繼續學習,想要在工作或在業餘時間做到這些,也並非一年半載可以做到,對么?
那麼,舉幾個其它的例子,精通Android應用音視頻播放開發,又如何呢?精通Android應用藍牙開發又怎樣呢?精通Android應用IM開發又如何呢?
我個人感覺,每個細分的領域裡,你都能列出幾項「精通」的標準,當你能做到精通一個大領域中,70%子領域的精通,基本上也就可以說精通這個大領域開發了罷。
一家之言,姑妄聽之。手機用戶精通android應該到會刷機會美化就算精通了 程序員的話要能寫驅動會寫應用樣樣都能來也算基本精通了吧 只會做應用的苦逼路過。嘎嘎
可能永遠不會精通。因為你學新技術的速度可能遠慢於新技術出現的速度
精通 Android?這個問題太大。
概括來說,精通 Android,需要滿足以下:
1. 精通操作系統原理,對 Linux 內核研究透徹,什麼進程 線程 存儲管理 文件系統 I/O要滾瓜爛熟,隨時拿出概念和代碼來提高逼格。2.精通數據結構與演算法,什麼紅黑樹 B樹 區間樹要爛在心裡,什麼最大流 貪心 動態規劃要隨手就來。
3.精通計算機圖形學,什麼二維三維模型,光照模型,各種面繪製,當然要精通 OpenGL,openCV...
4.精通編譯原理。詞法分析、語法分析、語法制導定義和語法制導翻譯、運行時刻環境、目標代碼生成、代碼優化技術、並行性檢測以及過程間分析技術。。。
5.精通可持續集成,比如 git repo...
6. 精通設計模式。
7.精通資料庫技術。
8.精通 C Cpp Java makefile shell...
9.精通密碼學。
上面的精通了,然後再看 Android 的源碼架構。
熟悉了操作系統和內核源碼,Android的各種驅動應該沒啥問題了。
圖形學讓你明白了,圖像繪製原理。
etc.
關於 framework 層,就是如何以上的知識,利用設計模式組織起來。
剩下的想起來再說!!!Android主要是做移植,做特效,做應用三個方向。
先不說「精通」二字本身是不是玄學。可能很多人都忽略了,Android是一整套操作系統,而且還是開源操作系統,而且還是大量優秀的Google工程師一起才能開發、維護的過來的系統,想要一個人達到「精通Android開發」,想必無異於痴人說夢——Android系統可不只有手機系統,還有手錶系統Android Wear和物聯網系統Android Things,以一人之力想要達到精通Android開發,基本上不太現實。
既然如此,細分出一些子項,比如精通Android手機應用開發、精通Android 虛擬機開發,我個人感覺這個範圍還是略大了些。
那麼我們把範圍再縮小一點,再細分出子項,比如 精通Android手機應用的UI開發 怎麼樣?這樣看來,似乎可以找到一些標準,比如:
- 熟悉Android UI相關源碼,理解整個View體系:View Tree的創建過程、ViewRoot的工作方式,ViewTree的遍歷時機和流程、View中的消息傳遞。理解Canvas繪圖過程
- 能夠獨立實現複雜且高效的UI布局和交互動畫。
- 理解Android繪製機制,能夠獨立分析、統計和優化UI卡頓。
- 熟悉主流UI庫……
- Etc.
唔……這樣看,似乎就不那麼遙不可及,無從下手了對嘛?但是從學習、實踐、總結、繼續學習,想要在工作或在業餘時間做到這些,也並非一年半載可以做到,對么?
那麼,舉幾個其它的例子,精通Android應用音視頻播放開發,又如何呢?精通Android應用藍牙開發又怎樣呢?精通Android應用IM開發又如何呢?
我個人感覺,每個細分的領域裡,你都能列出幾項「精通」的標準,當你能做到精通一個大領域中,70%子領域的精通,基本上也就可以說精通這個大領域開發了罷。至少要會開挖掘機吧。
達到Google Android部門所有研發加一起的水平,就精通了。
自己能夠獨立地做一款類似QQ的大點的APP
問題比較深奧,Android上還是非常淺薄的我經過深思熟慮,苦思冥想之後,My Final Answer是:
1. 精通玩Android:
熟練設置Android,下載Application,和電腦聯機,聯網接Wifi,出了軟體上的問題基本上能夠自己解決,熟知很多領域裡比較好的Application。2. 精通Application開發:
了解Android的基本框架,能夠用Java語言熟練開發Application,能夠熟練調試,編程,Troubleshooting。了解Android的方向,經常跟蹤Android的發展動向。了解Linux的一個基本框架和命令。3.精通Android的集成,包括手機硬體和驅動
Android的框架,Android的驅動程序開發,熟悉Java語言和C語言, 了解手機的硬體集成,知道手機的發展趨勢,熟悉bootloader,熟悉Linux的內核。4.精通Android的桌面開發
5.精通Android手機上的網頁Application的開發(實質上是PC機端的針對Android手機的Web Application)
首先了解Linux,JVM,JNI中的基本概念和運行機制,理解Android Framework層的核心服務與應用的互動,能有目的通過調試AOSP學習知識或解決問題。
精通 Android Application 使用
比小白多了解點
個人認為,在技術領域內,很難使用精通一詞吧。認識的幾個高手,都說去面試時,不敢寫精通一詞,可以講的是自己熟悉某一領域內的開發,如熟悉某類型的遊戲開發,熟悉某類型的商業應用開發。比如我自己做了5年的.net開發又做了5年的Dynamic crm二次開發,跟別人介紹時也只敢說熟悉Dynamic crm開發。真是做的越久越覺得自己淺薄。
每個人的精力有限,社會的分工也越來越細緻。如何給自己一個精確的定位,確定自己要參與的工作範圍是一個重要的事情。只有確定了這個範圍,熟悉這個範圍內的各個工作流程,各個工作任務,然後能夠熟練的完成工作內容,那麼在這個範圍內找工作、跟其他人交流,就自然而然的表現出自己是否真的熟悉了。
要看對什麼工作了吧,如果日常的ui開發,了解各種view繪製流程,按鍵相應流程,以及matrix的計算等等,最多看下surface。就可以了,但是如果說是框架工作,少說要把android。源碼看個差不多吧。。。
然後就可以說自己勉強會一點android了哈哈哈哈哈每個人每個公司對"精通安卓"理解不一樣: 滿足"精通安卓"招聘要求即可。--- 安卓知識太廣泛了,任何一個方向都可以夠你研究好久。
如果僅僅對"安卓開發"這四個字,招聘信息上的要求,狹義來說能夠把應用給流暢的做出來就可以了。廣義來說和安卓有關的,無論是系統應用開發還是底層驅動之類的,也是安卓開發,各個精通何其難。
最後,個人理解:有拿的出手技術方向,有全面的知識面,有豐富的應用開發經驗,誰敢說自己精通啊
學以致用
從底層linux到最上面,從集成平板電腦到任意開發app(網路,遊戲,應用等等等)
我真的還想再活500年
在各中版本的Android中,如果符合以下的要求,便說明你已經精通了這一版本的Android:
1.會打電話、發簡訊
2.會下載應用
3.會使用這些應用推薦閱讀:
※這段代碼為何能輸出"Hello World"?
※如何高效自學編程?
※視頻網站的彈幕是如何保存的?
※象棋和國際象棋的電腦程序是如何設計的?
※為什麼在目前開發工資這麼高的情況下還是在知乎上看到很多程序員想轉行?