1. 程式人生 > >Android 8.0系統原始碼分析--開篇

Android 8.0系統原始碼分析--開篇

     好久沒寫部落格了,在這裡上班基本都加班,而且公司上不了外網,手機都不能帶進辦公室,所以就間斷了。昨天中午沒事翻老羅的CSDN部落格,忽然發現老羅的《Android系統原始碼情景分析 [羅昇陽著]》一書的PDF電子版出來了,真是驚喜啊!!搞開發這麼久,一直對老羅的部落格情有獨鍾,確實寫的非常好,講的非常細緻!最好的學習方法是什麼?Read The Fuck Source Code!!趕緊下載下來,沒事了就看看,忽然今天又有個想法,將老羅的書按照現在Android 8.0的原始碼走一遍,因為老羅當時出書的時候是Android 2.3,而當時的Android系統更新也很快,這個可能是導致書的銷量不高的一個重要原因吧,說到這個也真的很惋惜,老羅的書寫的確實非常好,很值得大家一看,就是因為沒辦法跟上Android系統的更新,才導致銷量不高。

     自己再想想這個想法,感覺確實也很不錯,工作幾年了,對Android系統的學習也是零零散散,從來沒有系統性的學習過,剛好藉著老羅的書,跟著他的腳步走一走,如果能堅持完成的話,自己的能力肯定提升不少,不過老羅講的太細了,而且自己的功底也沒有那麼高,所以後續講的不好的地方還請大家諒解。

     我自己分析原始碼的環境沒有老羅那麼好,就是在網上下載的8.0系統原始碼,對著看而已,主要是想搞清楚邏輯就行,今天在家先搞好環境,載入原始碼用Android Studio,截圖如下。Android Studio的功能確實非常強大,各種用法,相信大家習慣的話,也一定非常喜歡。

     另外,老羅的《Android系統原始碼情景分析 [羅昇陽著]》PDF書和我自己的8.0系統的原始碼連結也分享出來,我用的是百度雲盤,PDF書的密碼是:ixwv,8.0系統原始碼的密碼是:kg62,可以隨意下載,準備好環境,後續我們就出發吧,開始我們自己的沉澱之路!!

相關推薦

Android 8.0系統原始碼分析--開篇

     好久沒寫部落格了,在這裡上班基本都加班,而且公司上不了外網,手機都不能帶進辦公室,所以就間斷了。昨天中午沒事翻老羅的CSDN部落格,忽然發現老羅的《Android系統原始碼情景分析 [羅昇陽著

Android 8.0系統原始碼分析--Binder程序間通訊(一)

 開始我們的沉澱之路,老羅的書中第二章講的是Android HAL層的知識,而且直接自己實現了一個虛擬的freg驅動程式,後面的幾節是分別從native、java層如何訪問這個虛擬的驅動程式介面,我這裡沒有這樣的環境,所以就不分析這節了,第三章的智慧指標我對比8.0系統原

Android 8.0系統原始碼分析--openCamera(HAL)啟動過程原始碼分析

     前面我們詳細分析了從應用層呼叫CameraManager的openCamera的方法來開啟相機的邏輯,上次的分析我們來到了CameraServer程序當中,但是還沒有真正看到open操作裝置節點來實現真正開啟的邏輯,遺留的問題也就是從frameworks\av\se

Android 8.0系統原始碼分析--Activity的視窗Window物件新增過程原始碼分析

     這節我們來看一下Activity的視窗Window物件的建立過程,Activity作為Android提供的四大元件之首,我們之所以能非常簡單的使用它,就是因為它的建立過程中,framework為我們作了大量的初始化工作,包括它的視窗Window、視訊記憶體Surf

Android 8.0系統原始碼分析--startService啟動過程原始碼分析

   作過android應用開發的同事都非常清楚,android提供了四個元件Activity、Service、BroastcastReceiver、ContentProvider,分別都有不同的作用,這也給我們的應用開發提供了非常大的幫助,因為這四大元件本身就已經處理了很

Android 8.0系統原始碼分析--相機createCaptureSession建立過程原始碼分析

     上一次我們詳細分析了openCamera啟動過程的原始碼,從CameraServer程序建立了很多物件,比如CameraDeviceClient、Camera3Device、FrameProcessorBase,而真正開啟相機還是在驅動層中上電後才完成的,有時候真想

Android 8.0系統原始碼分析--openCamera啟動過程原始碼分析

     說起Android相機的東西,從應用層的角度來看,基本就是四個重要的節點了:openCamera、createCaptureSession、preview、capture,最複雜的就是preview了,要理解preview,那麼就要求大家對And

Android 8.0 RIL原始碼分析(一)

1.去電流程三中跟蹤到最後的時候可以看到其呼叫了RIL的dail方法 這裡繼續以此分析其從RIL到Modem的流程 @Override public void dial(String address, int clirMode, UUSInfo

Android FrameWork學習(一)Android 7.0系統原始碼下載\編譯

最近計劃著研究下Android 7.0的系統原始碼,之前也沒做過什麼記錄,這次正好將學習的內容記錄下來,方便以後複習鞏固。 既然要學習我們的系統原始碼,那我們第一步要做的就是下載原始碼並進行編譯了。 硬體環境要求 1. 編譯環境 按照官方的說

Android 8.0 系統啟動流程之init程序--第二階段(五)

1、概述     上一篇中講了init程序的第一階段,我們接著講第二階段,主要有以下內容 建立程序會話金鑰並初始化屬性系統 進行SELinux第二階段並恢復一些檔案安全上下文 新建epoll並初始化子程序終止訊號處理函式 設定其他系統屬性並開啟系統屬性服務

Android 8.0 系統啟動流程之init.rc解析與service流程(七)

1、概述     上一篇文章中我們介紹了一下init.rc檔案中的語法規則,而本文將分析如何解析rc檔案,並對rc檔案中的某一service啟動過程進行分析。 2、解析.rc檔案 之前我們在文件中看到.rc檔案主要有根目錄下的 /init.rc ,以及

Android 8.0 系統啟動流程之Linux核心啟動--kernel_init程序(三)

    在上一篇文章中詳細的分析了kthreadd程序的啟動,init程序也是有idle程序去觸發啟動的,init程序分為前後兩部分,前一部分是在核心啟動的,主要是完成建立和核心初始化工作,內容都是跟Linux核心相關的;後一部分是在使用者空間啟動的,主要完成A

Android 8.0 系統啟動流程之init程序--第一階段(四)

1、概述     上一篇中講到,Linux系統執行完初始化操作最後會執行根目錄下的init檔案,init是一個可執行程式,它的原始碼在platform/system/core/init/init.cpp。init程序是使用者空間的第一個程序,我們熟悉的app應

Android 8.0 系統啟動流程之init.rc語法規則(六)

1、概述     init經過前兩個階段後,已經建立了屬性系統和SELinux系統,但是init程序還需要執行很多其他的操作,還要啟動許多關鍵的系統服務,但是如果都是像屬性系統和SELinux系統那樣一行行程式碼去做,顯得有點雜亂繁瑣,而且不容易擴充套件,所以

Android 8.0系統,版本升級不跳轉應用安裝頁面的完美解決

   最近開發遇到了個問題,app升級的時候,其他手機都能正常升級,下載完安裝包,跳到安裝頁面進行新版本的安裝。但卻有使用者反映,華為P10和華為Mate 9升級時,怎麼也無法跳轉到安裝頁面。起初我以為是華為手機自身系統的問題(因為手上的華為測試機都是正常的),還特地對比了幾

Android 8.0 系統啟動流程之zygote程序(八)

前言 在上一篇中我們講到,init程序會解析.rc檔案,並介紹了.rc檔案中的語法規則。其中不乏有許多service啟動,這些service通常不是普通的服務,文件裡面的稱呼是daemon(守護程序). 所謂守護程序就是這些服務程序會在系統初始化時啟動,並一

okhttp3.11.0原始碼分析開篇

為什麼要閱讀okhttp3 因為我們都只是在使用框架,如果出現什麼問題,就會手足無措。所以呢我們平時有時間就得去看下它 學習大牛的設計,從中學到如何應用設計模式,為以後自己專案的使用打下基礎 如何匯入原始碼 之前呢,我以為它是安卓專案,用AS進行匯入,

Android 7.0系統原始碼中如何編譯android studio工程

eclipse工程放在系統原始碼裡編譯,直接把整個包丟到系統裡,然後加一個Android.mk,就完事了,可是eclipse被谷歌拋棄很久了,現在琢磨者如何將android studio工程放到系統原始碼裡編譯,在網上找了一大圈 都沒有找到,只好自己幹了了。 android

Android 8.0系統的應用圖示不顯示問題

Android 8.0之後,APP的應用圖片會顯示成AndroidStudio的預設圖示(機器人的那個),那麼如果才能顯示我們自己設計的圖示呢?結論是:要做Android 8.0的系統圖片適配。1、在下圖中的mipmap-anydpi-v26資料夾上右鍵,New->Im