天天看點

Android 源碼結構

Android Source Code Architecture

1. Android framework

2. Android directories

|-- bionic

Android使用開源Linux核心同時Google為Linux核心增強了不少東西,自己開發了Bionic庫。首先GNU的核心在體積和運作效率上不适合移動裝置,系統核心元件都是以動态庫的形式駐留在每個程序中,運作效率和記憶體占用都是十分重要的問題。Google開發了一個自定義的庫名為Bionic,以BSD許可形式開源。

|-- bootloader

Legacy, 未知

|-- build

        Android 的Makefile實際上在此目錄下。

        |-- buildspec.mk.default                        //此檔案注釋中提到此檔案為臨時檔案,

        |-- cleanspec.mk                //clean build

|-- core                //mk (Makefile 檔案) 檔案多在此目錄下

|-- envsetup.sh                //用于編譯Android 的腳本

|-- libs                //不太清楚

|-- target                //類似于qtopia 中QPE/device目錄,關于不同target所需要的一些定義,為目标所需要檔案

`-- tools                //編譯過程中主機所需要的工具,一些需要經過編譯生成

其中,core中的Makefile是整個Android編譯所需要的真正的Makefile,它被頂層目錄的Makefile引用。

envsetup.sh是一個在使用仿真器運作的時候,用于設定環境的腳本。

dalvik目錄用于提供Android JAVA應用程式運作的基礎————JAVA虛拟機。

development目錄展開的一個級别的目錄如下所示:

|-- dalvik

        Google自己的java虛拟機, 有源碼。

|-- development

        在Android中運作, 用于開發中調試的工具。如Emulator上運作的,用于監視系統運作情況的程式。

|-- apps                       //Android應用程式的模闆

|-- build                      //編譯腳本模闆

|-- cmds

|-- data

|-- docs

|-- emulator                   //模拟器相關

|-- host                       //包含windows平台的一些工具

|-- ide

|-- pdk

|-- samples                    //一些示例程式

|-- simulator                  //大多是目标機器的一些工具

`-- tools

在emulator目錄中qemud是使用QEMU仿真時目标機器運作的背景程式,skins是仿真時手機的界面。

samples中包含了很多Android簡單工程,這些工程為開發者學習開發Android程式提供了很大便利,可以作為模闆使用。

|-- external

        非系統庫,bluez, dbus, yaffs2等。有一個googleclient, 還沒有看。

在external中,每個目錄表示Android目标系統中的一個子產品,可能有一個或者若幹個庫構成。其中:

opencore為PV(PacketVideo),它是Android多媒體架構的核心。

webkit是Android網絡浏覽器的核心。

sqlite是Android資料庫系統的核心。

openssl是Secure Socket Layer,一個網絡協定層,用于為資料通訊提供安全支援。

|-- frameworks                Android framework

        |-- base

        Base下的目錄清單

        |-- Android.mk

|-- MODULE_LICENSE_APACHE2

|-- NOTICE

|-- awt

|-- camera

|-- cmds

|-- core

                重點。Android SDK源碼在此。

|-- data

|-- docs

|-- graphics

|-- include

|-- libs

|-- location

|-- media

|-- opengl

|-- packages

|-- preloaded-classes

|-- sax

|-- services

|-- telephony

|-- test-runner

|-- tools

`-- wifi

|-- opt                //不大清楚

`-- policies        //手機運作的背景,好像管理按鍵消息,以及關機等

|-- hardware

        GPS, POWER, WIFI等硬體驅動

|-- kernel

        Linux kernel

|-- out                //編譯出的結果放在此目錄下,包括img檔案以及編譯好的jar庫

|-- packages        //Android應用程式,SDK中已經實作的應用程式,Alarm Clock, Media Player 等, 不能直接在1.0sdk上編譯,1.0的sdk中并沒有source code中庫的接口

|-- prebuilt                //平台相關 windows, linux(x86)等。

|-- recovery                //不大清楚

`-- system                //adb源碼在此

繼續閱讀