Android的原始碼結構

來源:互聯網
上載者:User
Google提供的Android包含了原始Android的目標機代碼,主機編譯工具、模擬環境,程式碼封裝經過解壓縮後,第一層級的目錄和檔案如下所示: 

|-- Makefile        (全域的Makefile) 
|-- bionic          (Bionic含義為仿生,這裡面是一些基礎的庫的原始碼) 
|-- bootloader      (引導載入器) 
|-- build           (build目錄中的內容不是目標所用的代碼,而是編譯和配置所需要的指令碼和工具) 
|-- dalvik          (JAVA虛擬機器) 
|-- development     (程式開發所需要的模板和工具) 
|-- external        (目標機器使用的一些庫) 
|-- frameworks      (應用程式的架構層) 
|-- hardware        (與硬體相關的庫) 
|-- kernel          (Linux2.6的原始碼) 
|-- packages        (Android的各種應用程式) 
|-- prebuilt        (Android在各種平台下編譯的預置指令碼) 
|-- recovery        (與目標的恢複功能相關) 
`-- system          (Android的底層的一些庫) 

bionic目錄展開一個層級的目錄如下所示: 
bionic/ 
|-- Android.mk 
|-- libc 
|-- libdl 
|-- libm 
|-- libstdc++ 
|-- libthread_db 
`-- linker 

bootloader目錄展開的兩個層級目錄: 
bootloader/ 
`-- legacy 
    |-- Android.mk 
    |-- README 
    |-- arch_armv6 
    |-- arch_msm7k 
    |-- fastboot_protocol.txt 
    |-- include 
    |-- libboot 
    |-- libc 
    |-- nandwrite 
    `-- usbloader 

build目錄展開的一個層級的目錄如下所示: 
build/ 
|-- buildspec.mk.default 
|-- cleanspec.mk 
|-- core                       (各種以mk為結尾的檔案,它門是編譯所需要的Makefile) 
|-- envsetup.sh 
|-- libs 
|-- target                     (包含board和product兩個目錄,為目標所需要檔案) 
`-- tools                      (編譯過程中主機所需要的工具,一些需要經過編譯產生) 

其中,core中的Makefile是整個Android編譯所需要的真正的Makefile,它被頂層目錄的Makefile引用。 
envsetup.sh是一個在使用模擬器啟動並執行時候,用於設定環境的指令碼。 
dalvik目錄用於提供Android JAVA應用程式啟動並執行基礎————JAVA虛擬機器。 
development目錄展開的一個層級的目錄如下所示: 
development 
|-- apps                       (Android應用程式的模板) 
|-- build                      (編譯指令碼模板) 
|-- cmds 
|-- data 
|-- docs 
|-- emulator                   (模擬相關) 
|-- host                       (包含windows平台的一些工具) 
|-- ide 
|-- pdk 
|-- samples                    (一些樣本程式) 
|-- simulator                  (大多是目標機器的一些工具) 
`-- tools 

在emulator目錄中qemud是使用QEMU模擬時目標機器啟動並執行背景程式,skins是模擬時手機的介面。 
samples中包含了很多Android簡單工程,這些工程為開發人員學習開發Android程式提供了很大便利,可以作為模板使用。 
external目錄展開的一個層級的目錄如下所示: 
external/ 
|-- aes 
|-- apache-http 
|-- bluez 
|-- clearsilver 
|-- dbus 
|-- dhcpcd 
|-- dropbear 
|-- elfcopy 
|-- elfutils 
|-- emma 
|-- esd 
|-- expat 
|-- fdlibm 
|-- freetype 
|-- gdata 
|-- giflib 
|-- googleclient 
|-- icu4c 
|-- iptables 
|-- jdiff 
|-- jhead 
|-- jpeg 
|-- libffi 
|-- libpcap 
|-- libpng 
|-- libxml2 
|-- netcat 
|-- netperf 
|-- neven 
|-- opencore 
|-- openssl 
|-- oprofile 
|-- ping 
|-- ppp 
|-- protobuf 
|-- qemu 
|-- safe-iop 
|-- skia 
|-- sonivox 
|-- sqlite 
|-- srec 
|-- strace 
|-- tagsoup 
|-- tcpdump 
|-- tinyxml 
|-- tremor 
|-- webkit 
|-- wpa_supplicant 
|-- yaffs2 
`-- zlib 

在external中,每個目錄表示Android目標系統中的一個模組,可能有一個或者若干個庫構成。其中: 
opencore為PV(PacketVideo),它是Android多媒體架構的核心。 
webkit是Android網路瀏覽器的核心。 
sqlite是Android資料庫系統的核心。 
openssl是Secure Socket Layer,一個網路通訊協定層,用於為資料通訊提供安全支援。 
frameworks目錄展開的一個層級的目錄如下所示: 
frameworks/ 
|-- base 
|-- opt 
`-- policies 

frameworks是Android應用程式的架構。 
hardware是一些與硬體相關的庫 
kernel是Linux2.6的原始碼 

packages目錄展開的兩個層級的目錄如下所示: 
packages/ 
|-- apps 
|   |-- AlarmClock 
|   |-- Browser 
|   |-- Calculator 
|   |-- Calendar 
|   |-- Camera 
|   |-- Contacts 
|   |-- Email 
|   |-- GoogleSearch 
|   |-- HTMLViewer 
|   |-- IM 
|   |-- Launcher 
|   |-- Mms 
|   |-- Music 
|   |-- PackageInstaller 
|   |-- Phone 
|   |-- Settings 
|   |-- SoundRecorder 
|   |-- Stk 
|   |-- Sync 
|   |-- Updater 
|   `-- VoiceDialer 
`-- providers 
    |-- CalendarProvider 
    |-- ContactsProvider 
    |-- DownloadProvider 
    |-- DrmProvider 
    |-- GoogleContactsProvider 
    |-- GoogleSubscribedFeedsProvider 
    |-- ImProvider 
    |-- MediaProvider 
    `-- TelephonyProvider 

packages中包含兩個目錄,其中apps中是Android中的各種應用程式,providers是一些內容提供者(在Android中的一個資料來源)。 
packages中兩個目錄的內容大都是使用JAVA編寫的程式,各個檔案夾的階層是類似的。 
prebuilt目錄展開的一個層級的目錄如下所示: 
prebuilt/ 
|-- Android.mk 
|-- android-arm 
|-- common 
|-- darwin-x86 
|-- linux-x86 
`-- windows 

system目錄展開的兩個層級的目錄如下所示: 
system/ 
|-- bluetooth 
|   |-- bluedroid 
|   `-- brfpatch 
|-- core 
|   |-- Android.mk 
|   |-- README 
|   |-- adb 
|   |-- cpio 
|   |-- debuggerd 
|   |-- fastboot 
|   |-- include            (各個庫介面的標頭檔) 
|   |-- init 
|   |-- libctest 
|   |-- libcutils 
|   |-- liblog 
|   |-- libmincrypt 
|   |-- libnetutils 
|   |-- libpixelflinger 
|   |-- libzipfile 
|   |-- logcat 
|   |-- logwrapper 
|   |-- mkbootimg 
|   |-- mountd 
|   |-- netcfg 
|   |-- rootdir 
|   |-- sh 
|   `-- toolbox 
|-- extras 
|   |-- Android.mk 
|   |-- latencytop 
|   |-- libpagemap 
|   |-- librank 
|   |-- procmem 
|   |-- procrank 
|   |-- showmap 
|   |-- showslab 
|   |-- sound 
|   |-- su 
|   |-- tests 
|   `-- timeinfo 
`-- wlan 
    `-- ti

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.