Android Framework學習方法匯總


  剛入行Android系統開發兩年,發現在項目維護和需求開發的時候僅僅考慮快速解決,而沒有深入理解其設計思想和思考高效穩定的解決方法,畢竟framework修改直接影響系統的穩定性,任何問題的修改,需要慎重。隨着項目的開展和積累,越發覺得需要深入學習理解framework的設計,下面是網上和相關書籍總結的學習思路,僅僅在此匯總下。

 

一、閱讀Android源碼的術與道:

  1、Android源碼的道

  Android的功夫,在Android之外。要想“理解”而非單純的“知道”,想“學習”而非單純的“記誦”。必備基礎:信息檢索能力、編程語言(C\C++、Java)、計算機系統知識、設計模式、JVM,多線程設計

  2、Android源碼的術

  針對每一個模塊本身的職責,詢問更細節的實現,永遠記住,先有的問題,之后才有的代碼。代碼實現是新鮮的,但是有了之前的鋪墊和對問題的預期,它們的出現才是可理解的。

總結:先理解模塊對應的要解決的“問題”是什么,再去給問題找解決方案的思路去理解源碼;

   理解源碼的功夫不止在Android本身,也要提高Android之外的姿勢水平。

 

二、Framework需求開發與維護注意點

  1、需求開發

1) 相關功能的現有模塊需要非常熟悉,否則會有非常大的風險

2 )所寫代碼盡量與已有類似的代碼保持風格一致

3 )必要的注釋,寫代碼的時候認為代碼的意圖貌似是理所當然,但是當別人看你的代碼或者過一段時間你自己查閱代碼的時候,很有可能由於代碼量過大,在代碼的海洋中未必容易理解某一段代碼的意圖

4 )找比自己能力強的,經驗較為豐富的同事review代碼。系統層畢竟是上層應用的基礎,必須保證其極高的穩定性,不像app即使有一些bug可以快速的迭代和發版推送。

  2、維護

1 )優秀的代碼設計。Android的代碼加工的順序大致是Google源碼->芯片廠商的修改->OEM廠商的修改。這些代碼里積累了大量世界級優秀的代碼設計方式,架構思想,這樣咱們對代碼的學習和認識的起步就是不低的,所以閱讀大量的代碼過后,我們再嘗試寫代碼的時候,一般也不會寫出低質量的代碼

2 )分析定位的技巧。一個經驗豐富的工程師的價值,主要會體現在遇到問題時,能夠分析定位解決問題的能力和效率,而很少會聽說我這有個20年經驗的工程師,他的價值在於別人一個小時能寫成的代碼他在一分鍾就寫出來了。

  剛踏入framework層維護開發的時候所需要注意和經歷的階段:

第一階段:熟悉各種基本工具的使用,比如linux,git,sourceinsight,svn等等,當然基本的編程知識需要有,如果如java之類的使用都還不是很熟,建議先回家讀書

第二階段:對所需要維護模塊的代碼逐漸熟悉起來,可以通過定位問題來梳理代碼流程,當然此時主要是通過log定位

第三階段:這個階段往往是一個瓶頸,因為可以直接通過Log定位的問題占大多數,這時候很多人就會自我感覺良好,也逐漸形成了惰性不再追求更多的知識,並且還會認為自己已經熟悉了很多的模塊。比如你按照這種方式工作了五年,我保證你再出去也找不到工作,因為你並沒有五年的工作經驗,只是使用了一個月能達到的經驗工作了五年!!!看代碼,梳理流程,這是最基本的工作模式,這個時候我們追求更“牛逼”的分析手段,比如使用性能分析工具systrace和traceview,比如Google提供的功耗分析工具buttery historal2.0,比如ddms里的內存分析工具mat和層級觀察器工具(能夠直接對應到UI上)

第四階段:追求性能穩定性的問題解決

第五階段:Android整體架構,對方案設計的優劣有自己的認識,並且能提出更好的改進方案

 

三、閱讀源碼時候的注意點

  開始看的時候要忽略細節,跟着流程走。工作原理一般都可以文字描述,如何實現的,跟着函數調用一步一步套,流程通了,細節就不在話下了。

  看不懂的多讀、不重要的少讀、邊讀邊思考、不是所有的都需要思考、記得做筆記。

1、高度抽象,構建框架
2、重要函數,深究細節
3、善用工具,及時總結

 

參考:https://www.zhihu.com/question/46486807

   https://www.cnblogs.com/hackerkevin/p/5616913.html

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM