Android源碼是開放的,作為一個(gè)Android開發(fā)人員來說,不管是工作需要還是為了個(gè)人能力提高,當(dāng)然都希望能夠深入地研究學(xué)習(xí)一下Android源碼,然而Android系統(tǒng)源代碼非常龐大,我們?cè)撊绾螌W(xué)習(xí)Android源代碼呢?華清小編為大家整理了一份Android源碼學(xué)習(xí)指南。
Android源碼學(xué)習(xí)指南
學(xué)習(xí)Android源碼前的準(zhǔn)備
Android系統(tǒng)的源代碼非常龐大和復(fù)雜,我們不能貿(mào)然進(jìn)入,否則很容易在里面迷入方向,進(jìn)而失去研究它的信心。我們應(yīng)該在分析它的源代碼之前學(xué)習(xí)好一些理論知識(shí),以下是學(xué)習(xí)Android源碼之前需要掌握的基礎(chǔ)知識(shí)。
Java基礎(chǔ):上層framework以及App層都是采用Java語法;
C/C++基礎(chǔ):Android的jni/native層代碼采用C++,Linux 采用C;
Linux:Android內(nèi)核基于Linux的,了解Linux相關(guān)知識(shí)對(duì)深入掌握Android還是很有必要。
Git:Android源碼采用git和repo進(jìn)行管理;
Make:Android源碼采用Make系統(tǒng)編譯,源碼系統(tǒng)中會(huì)看到很多Android.mk之類的文件;
Source Insight:這絕對(duì)是看源碼的神器;可以在Java、C++、C代碼之間無縫銜接;
Eclipse:熟悉常用快捷鍵,工欲善其事必先利其器;雖然Source Insight很方便,但由于對(duì)Eclipse的熟悉感,對(duì)于framework Java層面的代碼,我還是更習(xí)慣用Eclipse來看,對(duì)于Native代碼以及l(fā)inux代碼則采用Source Insight來看;
Android Studio:這是Google官方支持的App開發(fā)環(huán)境,關(guān)于Android Studiod使用教程;
Google Drawings:這是畫圖工具,Gityuan博客中的文章都是采用Google Drawing完成,比如Binder開篇文中的圖。
StarUML:這是類圖,Gityuan博客文章的類圖和流程圖都是采用StarUML完成,比如理解Android進(jìn)程創(chuàng)建流程文中時(shí)序圖。
Android源碼如何學(xué)習(xí)?
Android源碼學(xué)習(xí)環(huán)境的搭建
開發(fā)Android應(yīng)用程序可以在兩種環(huán)境下進(jìn)行,一是在Android SDK環(huán)境下進(jìn)行,一般是集成在Eclipse里面進(jìn)行開發(fā),二是在Android源代碼工程環(huán)境下進(jìn)行,在這種環(huán)境進(jìn)行開發(fā)的好處是可以使用一些在SDK中不公開的接口。但是如果我們要修改Android系統(tǒng)的源代碼,或者為Android系統(tǒng)增加新的功能接口,那么就只能在Android源代碼工程環(huán)境下進(jìn)行了。由于我們的目的是對(duì)Android系統(tǒng)源代碼進(jìn)行分析,因此,我們?cè)陂_發(fā)Android應(yīng)用程序時(shí),也在Android源代碼環(huán)境下進(jìn)行。這樣我們就需要搭建一套Android源代碼工程環(huán)境了。
目前,Android源代碼工程環(huán)境只能在Linux平臺(tái)上使用,而Linux系統(tǒng)的發(fā)行版本比較多,這里我們推薦Ubuntu系統(tǒng)。Ubuntu系統(tǒng)是免費(fèi)的,而且非常易于使用,安裝和更新應(yīng)用程序也非常方便。安裝好Ubuntu系統(tǒng)之后,我們就可以在上面下載、編譯和安裝Android源代碼了。
Android系統(tǒng)的源代碼工程默認(rèn)是不包含Linux內(nèi)核源代碼的,如果我們需要修改Android系統(tǒng)的內(nèi)核或者在里面增加新的模塊,那么就要把Android內(nèi)核源代碼一起下載、編譯和安裝了。
Android源代碼工程環(huán)境搭建好了之后,我們就可以在里面開發(fā)新的應(yīng)用程序或者修改系統(tǒng)代碼了。增加了新的應(yīng)用程序或者修改了系統(tǒng)的代碼之后,不需要重新編譯整個(gè)源代碼工程,只要單獨(dú)編譯有改動(dòng)的模塊就可以了。
對(duì)于已經(jīng)開發(fā)好的應(yīng)用程序或者系統(tǒng)功能,如果想把當(dāng)作Demo展示給客戶來體驗(yàn)時(shí),我們既可以在真機(jī)上面運(yùn)行,也可以在模擬器(Android源代碼工程環(huán)境或者Android SDK環(huán)境都集成了模擬器)上面運(yùn)行。當(dāng)我們手頭上沒有真機(jī),而且我們又不想把整個(gè)Android源代碼工程環(huán)境或者Android SDK環(huán)境帶去展示我們的Demo時(shí),就可以考慮把模擬器這兩個(gè)環(huán)境中獨(dú)立出來了。
Android源碼學(xué)習(xí)資料的準(zhǔn)備
可以去看一些技術(shù)博客,有些博客會(huì)按照順序總結(jié)一套學(xué)習(xí)教程,這些都是他們學(xué)習(xí)Android源碼的經(jīng)驗(yàn)和體會(huì),對(duì)于你學(xué)習(xí)Android源碼是很有幫助的。另外推薦一些對(duì)學(xué)習(xí)Android源碼有幫助的書籍:《Android系統(tǒng)源代碼分析》、《Android的設(shè)計(jì)與實(shí)現(xiàn)》、《深入理解android》系列、《Android內(nèi)核剖析》。
帶著任務(wù)去學(xué)習(xí)Android源碼
直接沒目的的學(xué)習(xí)Android源碼效果并不好,建議設(shè)計(jì)一系列的任務(wù),帶著任務(wù)學(xué)習(xí)源碼。
以上就是小編收集整理的關(guān)于如何學(xué)習(xí)Android源碼的相關(guān)資料,希望對(duì)想要學(xué)習(xí)安卓源碼的朋友們有所幫助。
熱點(diǎn)新聞
課程問答