<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                本章主要介紹了安卓的系統架構和體系 Android源代碼查看網站: * [Android OS](https://www.androidos.net.cn/) * [Android XRef](http://androidxref.com ) * http://www.grepcode.com/ 可以鄙人的另一篇文章[下載Android源碼以及查看源碼](http://www.hmoore.net/alex_wsc/android_source/402530) #### **Android 系統架構**: * **Linux層:** Linux 層, Android 最低層最核心的部分。當我們打開手機Setting ,選擇about phone 邊項,這一選項所顯示的內核版本,就是我們所用的Linux 內核的版本。Lim以層包含了Android 系統的核心服務,包插硬件驅動、進程管理、安全系統,等等。 * **Dalvik 和 ART:** * Dalvik好比是一輛可折疊的自行車,平時是折疊的,只有騎的時候,才需要組裝起來用。Dalvik 包含了一整套的Android 運行環境慮擬機,每個App 都會分配Dalvik 虛擬機來保證互相之間不受干擾,并保持獨立。它的特點是在運行時編譯。 * ART好比是一輛組裝好了的自行車,裝好就可以騎了。在Android 5.X 版本開始, ART 模式已經取代了Dalvik , ART采用的是安裝時就進行編譯,以后運行時就不用編譯了, #### **Android APP組件架構:** 在應用層,Android 的App組件架構,通常就是我們所說的Android 四大組件, 指的是Activity 、BroadCastReciever、ContentProvider 和Service ,它們是組成一個Android App的最基本元素。 Android系統還提供了一個信使-Intent ,作為信息傳邊的載體。組件與組件之間通過Intent來通信、傳遞信息、交換數據,正是通過這樣一種方式,四大組件形成了各自獨立而又緊密聯系的關系,讓整個Android系統“活”了起來。 **應用運行上下文對象** 在程序中,我們可以理解為當前對象在程序中所處的一個環境,一個與系統交互的過程。 Android系統的上下文對象,即在Context中,為我們封裝這樣一個“語境”。Activity、Service、Application 都是繼承自Context。 Android 應用程序會在如下所示的幾個時間點創建應用上下文Context 。 * 創建Application * 創建Activity * 創建Service 當應用程序第一次啟動時, Android系統都會創建一個Application對象,同時創建Application Context,所有的組件都共同擁有這樣一個Context對象,這個應用上下文對象貫穿整個應用進程的生命周期,為應用全局提供功能和環境支峙。而創建Activity 和Service 組件時,系統也會給它們提供運行的上下文環境,即創建Aclivily實例、Service實例的Context對象。所以很多讀者在Activity中獲取Context 對象時,可以直接使用this ,而在匿名內部類中,就必須指定XXXXActivity.this才可以獲得該Activity的Context對象。當然,你也可以跑過getApplicationContext()方也來獲取整個App的Context,但是通過getApplicationContext()應也獲得的是整個應用的上下文引用,這與某個組件的上下文引用,在某些時候還是有區別的。 #### **Android系統源代碼目錄:** **要想看完整個Android的源代碼,你要懂C、懂腳本、懂Java**,不僅軟硬兼施,而且有一顆耐得住寂寞、忍得了枯燥的心。所以,對于大多數人來說,我們只需要了解它的框架結構,出了問題知道從哪里著手解決就可以了。 **目錄結構**: * Makefile (描述Android各個組件間的聯系并指導它們進行自動化編譯) * bionic (bionic C庫) * bootable (啟動引導相關代碼) * build (系統編譯規則等基礎開發包配置) * cts (Google兼容性測試標準) * dalvik (Dalvik虛擬機) * development (應用程序開發相關) * external (android使用的一些開源模塊) * frameworks (Framework框架核心) * hardware (廠商硬件適配層HAL) * out (編譯完成后的代碼輸出目錄) * packages (應用程序包) * prebuilt (x86和arm架構下預編譯資源) * sdk (sdk及模擬器) * system (底層文件系統庫、應用及組件) * vendor (廠商定制代碼) >[info] 注意:并不是所有的源代碼結構都是這樣。只有AOSP的Android項目才是過樣一個結構,有些芯片廠商如MTK,它們的同錄結構就與此不同。 **Makefile 機制** Android與很多語言一樣,引入了Makefile 機制。那么Makefile到底有什么好處呢?我們先看一下對Makefile 的解釋:一個像Android這樣的大型工程,它的源文件不計其數,不同的功能、模塊,按類型分別放置在不同的目錄中,這些模塊通常會有-個叫Makefile的文件來進行管理。它定義了一系列的規則來指定模塊,哪些文件需要編譯,以及這些文件該按照怎樣的順序去編譯。甚至,它還可以配置更復雜的功能操作,比如定義編譯規則,打包規則等,因為Makefile 就像一個shell腳本,不僅可以使用自己的語法, 也能調用操作系統的命令。 可以看到, Makefile最大的好處就是自動化編譯,同時還可以做到可控制的編譯,Android通過Makefile來描述Android各個組件間的聯系并指導它們進行自動化編譯。Makefile的語法,指定了各個源代碼該如何連接并生成相應的可執行徨序。這時候大家再來看看我們前面列出的Android源代碼目錄結構,每個目錄中,還會包含更多的日錄,而它的每一個最小的功能單位的目錄下,都會有-個Makefile文件, 這樣每一級向上,通過過樣一個個Makefile文件,就把整個源代碼有條不紊地聯系在一·起了。 #### **Android系統目錄**: * /system/app/ 存放一些系統的app * /system/bin/ 存放的主要是Linux自帶的組件 * /system/build.prop/ 系統的屬性信息 * /system/fonts/ 系統字體存放目錄 root后可下載TTF格式字體替換原字體,達到修改系統字體的效果 * /system/framwork/ 系統核心文件、框架層 * /system/lib/ 存放幾乎所有共享庫(.so)文件 * /system/media/ 系統提示音和系統鈴聲 * /system/usr/ 保存用戶的配置文件 * /data/app/ 包含用戶的大部分數據信息、用戶安裝的app和升級的app * /data/data/ 包含app的數據信息、文件信息、數據庫信息等,以包名的方式來區分各個應用 * /data/system/ 手機各項系統信息 * /data/misc/ 保存大部分wifi和vpn信息 本章對于開發的內容介紹的不多 就寫這么多了!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看