寫于2015年12月3日
不同的android版本,不同的framework實現,framework有近2億行代碼,版本越高,代碼行數越大,這個過程是很痛苦的。所以不要去學習和閱讀framework的源代碼。
閱讀它的源代碼,還不如去學英語,多看應用層的API,多看理財的書籍。
如果不做framework開發,做app開發的話,看了framework的代碼對app開發的幫助是很少的,公司不會因為這個而給你加工資,還不如去學習英語,金融等給自己加薪,和用錢賺錢。
------------
1、首先覺得你的題目和問題描述不太搭邊。你所說的復雜功能效果實際上幾乎都是應用層的,和framework不搭邊。因為如果只是做應用開發,那就完全依賴現成的基礎組件和接口,最多自定義一下組件和布局。你在網上找到的很流暢很美觀的現成組件都是別人自定義之后封裝的。別人能做,實際上你應該也能做。多看看別人的demo,試著對你不滿意的地方做點改進,總會有收獲。一旦覺得有點心得,記錄下來或者把你封裝的東西拿出來讓大家用用,一起討論討論,必然收獲更多。
2、關于framework,更多是做的應用層之下的系統層面的東西。比如電源管理、消息隊列、包管理等等,還包括對硬件的支持及系統提供給上層的硬件功能調用接口。framework的學習必然離不開不斷編譯rom和刷機。這就要求有耐心有時間有興趣。而且由于framework層多數模塊都是以JNI方式被調用的,因此你需要有比較扎實的C語言基礎,之少能看懂程序結構。除此之外,對你想要詳細研讀的模塊在應用層的應用需要有必要的理解。我剛開始看源碼的時候是從電源管理模塊開始看的,就是因為當時對android系統自帶的電源提醒方式以及電量通知不太滿意,想重新定義更多層級的提醒。剛開始也是一頭霧水,但還是硬著頭皮一點點啃。這個過程中,為了防止忘記之前看過什么,所以又不斷對看過的源碼做注釋并做閱讀筆記。大概兩三個月,雖然了解的也比較淺顯,但是我的目的達到了。源碼之路漫漫,看個三五年都不一定敢說能夠整體吃透。雖如此,但只要有鉆研的方向和基本的能力,相信工作中遇到的framework層的改動應當還是能夠負擔得住的。
3、如果不想深入framework,其實你也可以做android系統應用的開發。這一步幾乎和上層應用開發差不多,不過可以調用的庫更豐富,權限更高罷了。這個可以自己研究,參照android系統出場自帶的應用。
說了這些。希望能夠有點幫助。