天天看點

Android系統學習1

    一直使用delphi,從大學到工作,一直依靠控件,當現在控件越來越少的時候發現自己

像剛畢業的學生,什麼都不會,從兩條路選擇,一個是從頭學delphi,要麼繼續用控件,從

頭學就要從最開始的底層學習,消息啊,線程啊,流的,等等可是delphi的路現在是越走

越窄,一般的公司也都是停留在維護階段了,既然要下決心從頭學起,那麼為什麼不學一

個新的技術呢,那麼就學自己喜歡的移動裝置吧,Android可是個好東西,開源,免費,

從現在開始記錄學習過程吧。

Android從系統架構

   Android從系統架構上來說總共分為五個層,依次是應用程式層,應用程式架構層,系統運

        行庫層,Linux核心層。

  1、應用程式層  

                             一些基本的功能就在這個裡,比如主界面,短信,月曆,地圖等等,他需要

                               應用程度架構層的支援也可以使用JAVA通過JNI方式,那麼什麼是JNI呢,

                              JNI(java Native Interface) java的本地調用,百度是這麼說的估計是為了調用

                              底層的C/C++語言,誰讓JAVA太高層了呢。

 2、應用程式架構層 

                              這個層就為了開發人員寫應用程式所使用的API架構,封裝了大多數的功能,

                             比如活動管理器,視窗管理器視圖系統等等,硬體的就有電話撥打,地圖服務,

                             藍牙,USB,傳感器等等

3、系統運作庫層   

                          這層就比較底層了,分為兩部分,一個呢程式庫,為應用程式架構層提供服務,

                           比如什麼資料庫,2D3D的圖形引擎圖檔和字型的顯示,浏覽器的支援等等,

                            另一個就是運作時庫,分為核心庫和虛拟機,教育訓練的時候說在電腦上為了适應

                             跨平台而産生了虛機機,到手機上就從底層支援了JAVA,支援是支援了,

                            怎麼還存在虛機機,反正這裡是不太了解了。

4、Linux層  如記憶體管理,程序,驅動子產品,網絡棧,都在這裡,存在于軟體和硬體之間,

                           硬體時鐘,記憶體配置設定,Kernel調試,日志,電源管理

                              金山電源管理那軟體是不是就在這裡寫的?IPC機制(程序間通信)

Android初始化流程

       1、開機 - Linux Kernel - Init                            

        2、初始化後呢會産生兩個程序,一個是守護程序,一個是Zygote程序,感覺像一個是管理硬體的,一個是管理軟體的

        3、守護程序會開啟四個守護程序,1、USB守護程序,2、Android Debug Bridge守護程序來管理ADB連接配接,

                                                                      3、Debug守護程序,4、無線接口守護程序

        4、Zygote會初始化一個Dalvik虛拟機執行個體,裝載監聽,管理應用程式的程序

        5、然後初始化Runtime程序,有兩個操作,初始化服務管理器和注冊服務管理器,然後發送一個請求到Zygote,開啟系統

              服務,那邊就建立了個虛拟機的執行個體,開啟系統服務

        6、以後的事好像就是從虛拟機開始了,啟動原生系統服務,SurfaceFlinger和AudioFlinger注冊到服務管理器作為IPC服務的目标

        7、系統服務将啟動android管理服務,都被注冊到伺服器管理器上

        8、最後所有服務都處于等待狀态,等待程式運作。

今天到這裡,再學再寫。

主要就是Android的系統結構和初始化流程。