Android的四層架構相比大家都很清楚,老生常談的說一下分別為:
Linux2.6內核層,核心庫層,應用框架層,應用層。我今天重點介紹一下應用框架層Framework。
????????Framework層為我們開發應用程序提供了非常多的API,我們通過調用特殊的API構造我們的APP,滿足我們業務上的需求。寫APP的人都知道,學習Android開發的第一步就是去學習各種各樣的API,什么Activity,Service,Notification等。這些都是framework提供給我們的,那么我就詳細的講講Framework到底在整個Android架構中扮演著什么角色。
?Framework功能
? ? ? ? ?Framework其實可以簡單的理解為一些API的庫房,android開發人員將一些基本功能實現,通過接口提供給上層調用,可以重復的調用
???????? 我們可以稱Framework層才真正是Java語言實現的層,在這層里定義的API都是用Java語言編寫。但是又因為它包含了JNI的方法,JNI用C/C++編寫接口,根據函數表查詢調用核心庫層里的底層方法,最終訪問到Linux內核。那么Framework層的作用就有2個。
1.用Java語言編寫一些規范化的模塊封裝成框架,供APP層開發者調用開發出具有特殊業務的手機應用。
2.用Java Native Interface調用core lib層的本地方法,JNI的庫是在Dalvik虛擬機啟動時加載進去的,Dalvik會直接去尋址這個JNI方法,然后去調用。
??????? 2種方式的結合達到了Java方法和操作系統的相互通信。Android為什么要用Java編寫Framework層呢?直接用C或C++不是更好?有關專家給出了如下解釋:
????? C/C++過于底層,開發者要花很多的經歷對C/C++的語言研究清楚,例如C/C++的內存機制,如果稍不注意,就會忘了開啟或者釋放。而Java的GC會自動處理這些,省去了很多的時間讓開發者專注于自己的業務。所以才會從C/C++的底層慢慢向上變成了JAVA的開發語言,該層通過JNI和核心運行庫層進行交互。
??????? ?其實這些也是Java能發展這么迅速的原因,面對對象語言的優勢。不用太關注內存,放心大膽的去做實現,才有時間去創造新的事物。
Framework API
?
Activity Manager
?
用來管理應用程序生命周期并提供常用的導航回退功能。
?
Window Manager
?
提供一些我們訪問手機屏幕的方法。屏幕的透明度、亮度、背景。
?
Content Providers
?
使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫), 或者共享它們自己的數據。
?
View System
?
可以用來構建應用程序, 它包括列表(Lists),網格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。
?
Notification Manager
?
使得應用程序可以在狀態欄中顯示自定義的提示信息。
?
Package Manager
?
提供對系統的安裝包的訪問。包括安裝、卸載應用,查詢permission相關信息,查詢Application相關信息等。
?
Telephony Manager
?
主要提供了一系列用于訪問與手機通訊相關的狀態和信息的方法,查詢電信網絡狀態信息,sim卡的信息等。
?
Resource Manager
?
提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layout files )。
?
Location Manager
?
提供設備的地址位置的獲取方式。很顯然,GPS導航肯定能用到位置服務。
?
XMPP
?
應用程序層(JAVA應用程序):
??該層提供一些核心應用程序包,例如電子郵件、短信、日歷、地圖、瀏覽器和聯系人管理等。同時,開發者可以利用Java語言設計和編寫屬于自己的應用程序,而這些程序與那些核心應用程序彼此平等、友好共處。
?
應用程序框架層(JAVA框架):
??該層是Android應用開發的基礎,開發人員大部分情況是在和她打交道。應用程序框架層包括活動管理器、窗口管理器、內容提供者、視圖系統、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務十個部分。在Android平臺上,開發人員可以完全訪問核心應用程序所使用的API框架。并且,任何一個應用程序都可以發布自身的功能模塊,而其他應用程序則可以使用這些已發布的功能模塊。基于這樣的重用機制,用戶就可以方便地替換平臺本身的各種應用程序組件。
?
系統庫和android運行時層(本地框架和JAVA運行環境):
??系統庫包括九個子系統,分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。
? Android運行時包括核心庫和Dalvik虛擬機,前者既兼容了大多數Java語言所需要調用的功能函數,又包括了Android的核心庫,比如android.os、android.net、android.media等等。后者是一種基于寄存器的java虛擬機,Dalvik虛擬機主要是完成對生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。
?
LINUX內核層:
??Android核心系統服務依賴于Linux內核,如安全性、內存管理、進程管理、網絡協議棧和驅動模型。Linux內核也是作為硬件與軟件棧的抽象層。
? 驅動:顯示驅動、攝像頭驅動、鍵盤驅動、WiFi驅動、Audio驅動、flash內存驅動、Binder(IPC)驅動、電源管理等。
?
2. android源碼目錄結構:
?
- Android?5.1??
- |--?Makefile??
- |--?abi??
- |--?art??
- |--?bionic?(bionic?C庫)??
- |--?bootable?(啟動引導相關代碼)??
- |--?build?(存放系統編譯規則及generic等基礎開發包配置)??
- |--?cts?(Android兼容性測試套件標準)??
- |--?dalvik?(dalvik?JAVA虛擬機)??
- |--?developers??
- |--?development?(應用程序開發相關)??
- |--?device??
- |--?docs??
- |--?external?(android使用的一些開源的模組)??
- |--?frameworks?(核心框架——java及C++語言)??
- |--?hardware?(部分廠家開源的硬解適配層HAL代碼)??
- |--?kernel??
- |--?libcore??
- |--?libnativehelper??
- |--?ndk??
- |--?out?(編譯完成后的代碼輸出與此目錄)??
- |--?packages?(應用程序包)??
- |--?pdk??
- |--?prebuilts?(x86和arm架構下預編譯的一些資源)??
- |--?sdk?(sdk及模擬器)??
- |--?system?(底層文件系統庫、應用及組件——C語言)??
- |--?tools??
- `--?vendor?(廠商定制代碼)??
- ??
- bionic?目錄??
- |--?benchmarks??
- |--?libc?(C庫)??
- |?|--?arch-arm?(ARM架構,包含系統調用匯編實現)??
- |?|--?...??
- |?|--?bionic?(由C實現的功能,架構無關)??
- |?|--?dns??
- |?|--?include?(頭文件)??
- |?|--?kernel?(Linux內核中的一些頭文件)??
- |?|--?private?(?一些私有的頭文件)??
- |?|--?stdio?(stdio實現)??
- |?|--?tools?(幾個工具)??
- |?|--?tzcode?(時區相關代碼)??
- |?|--?upstream-dlmalloc??
- |?|--?upstream-freebsd??
- |?|--?upstream-netbsd??
- |?|--?upstream-openbsd??
- |?`--?zoneinfo?(時區信息)??
- |--?libdl?(libdl實現,dl是動態鏈接,提供訪問動態鏈接庫的功能)??
- |--?libm?(libm數學庫的實現,)??
- |--?libstdc++?(libstdc++?C++實現庫)??
- |--?linker?(動態鏈接器)??
- `--?test??
- ??
- bootable?目錄??
- |--?bootloader?(適合各種bootloader的通用代碼)??
- |?|--?legacy?(估計不能直接使用,可以參考)??
- |?`--?lk??
- `--?recovery?(系統恢復相關)??
- |?|--?edify?(升級腳本使用的edify腳本語言)??
- |?|--?etc?(init.rc恢復腳本)??
- |?|--?minui?(一個簡單的UI)??
- |?|--?minzip?(一個簡單的壓縮工具)??
- |?|--?mtdutils?(mtd工具)??
- |?|--?res?(資源)??
- |?|--?tools?(工具)??
- |?|?`--?ota?(OTA?Over?The?Air?Updates升級工具)??
- |?`--?updater?(升級器)??
- ??
- build目錄??
- |--?core?(核心編譯規則)??
- |--?libs???
- |?`--?host?(主機端庫,有android?“cp”功能替換)??
- |--?target?(目標機編譯對象)??
- |?|--?board?(開發平臺)??
- |?|--?product?(開發平臺對應的編譯規則)??
- `--?tools?(編譯中主機使用的工具及腳本)??
- ??
- ??
- dalvik目錄?dalvik虛擬機??
- |--?dexdump?(dex反匯編)??
- |--?dexgen??
- |--?dexlist?(List?all?methods?in?all?concrete?classes?in?a?DEX?file.)??
- |--?docs?(文檔)??
- |--?dx?(dx工具,將多個java轉換為dex)??
- |--?hit?(?java語言寫成)??
- |--?opcode-gen??
- |--?tools?(工具)??
- `--?vm?(虛擬機實現)??
- ??
- development?目錄?(開發者需要的一些例程及工具)??
- |--?apps?(一些核心應用程序)??
- |?|--?BluetoothDebug?(藍牙調試程序)??
- |?|--?CustomLocale?(自定義區域設置)??
- |?|--?Development?(開發)??
- |?|--?Fallback?(和語言相關的一個程序)??
- |?|--?FontLab?(字庫)??
- |?|--?GestureBuilder?(手勢動作)??
- |?|--?NinePatchLab?(?)??
- |?|--?OBJViewer?(OBJ查看器)??
- |?|--?SdkSetup?(SDK安裝器)??
- |?|--?SpareParts?(高級設置)??
- |?|--?Term?(遠程登錄)??
- |?`--?launchperf?(?)??
- |--?build?(編譯腳本模板)??
- |--?cmds?(有個monkey工具)??
- |--?docs?(文檔)??
- |--?host?(主機端USB驅動等)??
- |--?ide?(集成開發環境)??
- |--?libraries??
- |--?ndk?(本地開發套件——c語言開發套件)??
- |--?samples?(例程)??
- |?|--?AliasActivity?(?)??
- |?|--?ApiDemos?(API演示程序)??
- |?|--?BluetoothChat?(藍牙聊天)??
- |?|--?BrowserPlugin?(瀏覽器插件)??
- |?|--?BusinessCard?(商業卡)??
- |?|--?Compass?(指南針)??
- |?|--?ContactManager?(聯系人管理器)??
- |?|--?CubeLiveWallpaper?(動態壁紙的一個簡單例程)??
- |?|--?FixedGridLayout?(像是布局)??
- |?|--?GlobalTime?(全球時間)??
- |?|--?HelloActivity?(Hello)??
- |?|--?Home?(Home)??
- |?|--?JetBoy?(jetBoy游戲)??
- |?|--?LunarLander?(貌似又是一個游戲)??
- |?|--?MailSync?(郵件同步)??
- |?|--?MultiResolution?(多分辨率)??
- |?|--?MySampleRss?(RSS)??
- |?|--?NotePad?(記事本)??
- |?|--?RSSReader?(RSS閱讀器)??
- |?|--?SearchableDictionary?(目錄搜索)??
- |?|--?SimpleJNI?(JNI例程)??
- |?|--?SkeletonApp?(空殼APP)??
- |?|--?Snake?(snake程序)??
- |?|--?SoftKeyboard?(軟鍵盤)??
- |?|--?Wiktionary?(?維基)??
- |?`--?WiktionarySimple(?維基例程)??
- |--?scripts?(腳本)??
- |--?sdk?(sdk配置)??
- |--?sdk_overlay??
- |--?sys-img??
- |--?testrunner?(?測試用)??
- |--?tools?(一些工具)??
- `--?tutorials??
- ??
- external?目錄??
- |--?apache-http?(網頁服務器)??
- |--?bison?(自動生成語法分析器,將無關文法轉換成C、C++)??
- |--?blktrace?(blktrace?is?a?block?layer?IO?tracing?mechanism)??
- |--?bluetooth?(藍牙相關、協議棧)??
- |--?bsdiff?(diff工具)??
- |--?bzip2?(壓縮工具)??
- |--?dhcpcd?(DHCP服務)??
- |--?e2fsprogs?(EXT2文件系統工具)??
- |--?elfcopy?(復制ELF的工具)??
- |--?elfutils?(ELF工具)??
- |--?embunit?(Embedded?Unit?Project)??
- |--?emma?(java代碼覆蓋率統計工具)??
- |--?esd?(Enlightened?Sound?Daemon,將多種音頻流混合在一個設備上播放)??
- |--?expat?(Expat?is?a?stream-oriented?XML?parser.)??
- |--?fdlibm?(FDLIBM?(Freely?Distributable?LIBM))??
詳細目錄介紹:
\system\app?
這個里面主要存放的是常規下載的應用程序,可以看到都是以APK格式結尾的文件。在這個文件夾下的程序為系統默認的組件,自己安裝的軟件將不會出現在這里,而是\data\文件夾中。下面是詳細的介紹:
\system\app\AlarmClock.apk 鬧鐘
\system\app\AlarmClock.odex
\system\app\Browser.apk 瀏覽器
\system\app\Browser.odex
\system\app\Bugreport.apk Bug報告
\system\app\Bugreport.odex
\system\app\Calculator.apk 計算器
\system\app\Calculator.odex
\system\app\Calendar.apk 日歷
\system\app\Calendar.odex
\system\app\CalendarProvider.apk 日歷提供
\system\app\CalendarProvider.odex
\system\app\Camera.apk 照相機
\system\app\Camera.odex
\system\app\com.amazon.mp3.apk 亞馬遜音樂
\system\app\Contacts.apk 聯系人
\system\app\Contacts.odex
\system\app\DownloadProvider.apk 下載提供
\system\app\DownloadProvider.odex
\system\app\DrmProvider.apk DRM數字版權提供
\system\app\DrmProvider.odex
\system\app\Email.apk 電子郵件客戶端
\system\app\Email.odex
\system\app\FieldTest.apk 測試程序
\system\app\FieldTest.odex
\system\app\GDataFeedsProvider.apk GoogleData提供
\system\app\GDataFeedsProvider.odex
\system\app\Gmail.apk Gmail電子郵件
\system\app\Gmail.odex
\system\app\GmailProvider.apk Gmail提供
\system\app\GmailProvider.odex
\system\app\GoogleApps.apk 谷歌程序包
\system\app\GoogleApps.odex
\system\app\GoogleSearch.apk 搜索工具
\system\app\GoogleSearch.odex
\system\app\gtalkservice.apk GTalk服務
\system\app\gtalkservice.odex
\system\app\HTMLViewer.apk HTML查看器
\system\app\HTMLViewer.odex
\system\app\IM.apk 即使通訊組件包含MSN、yahoo通
\system\app\ImCredentialProvider.apk
\system\app\ImProvider.apk
\system\app\ImProvider.odex
\system\app\Launcher.apk 啟動加載器
\system\app\Launcher.odex
\system\app\Maps.apk 電子地圖
\system\app\Maps.odex
\system\app\MediaProvider.apk 多媒體播放提供
\system\app\MediaProvider.odex
\system\app\Mms.apk 短信、彩信
\system\app\Mms.odex
\system\app\Music.apk 音樂播放器
\system\app\Music.odex
\system\app\MyFaves.apk T-Mobile MyFaves程序
\system\app\MyFaves.odex
\system\app\PackageInstaller.apk apk安裝程序
\system\app\PackageInstaller.odex
\system\app\Phone.apk 電話撥號器
\system\app\Phone.odex
\system\app\Settings.apk 系統設置
\system\app\Settings.odex
\system\app\SettingsProvider.apk 設置提供
\system\app\SettingsProvider.odex
\system\app\SetupWizard.apk 設置向導
\system\app\SetupWizard.odex
\system\app\SoundRecorder.apk 錄音工具
\system\app\SoundRecorder.odex
\system\app\Street.apk 街景地圖
\system\app\Street.odex
\system\app\Sync.apk 同步程序
\system\app\Sync.odex
\system\app\Talk.apk 語音程序
\system\app\Talk.odex
\system\app\TelephonyProvider.apk 電話提供
\system\app\TelephonyProvider.odex
\system\app\Updater.apk 更新程序
\system\app\Updater.odex
\system\app\Vending.apk 制造商信息
\system\app\Vending.odex
\system\app\VoiceDialer.apk 語音撥號器
\system\app\VoiceDialer.odex
\system\app\YouTube.apk Youtube視頻
\system\app\YouTube.odex
?
?
\system\bin
這個目錄下的文件都是系統的本地程序,從bin文件夾名稱可以看出是binary二進制的程序,里面主要是Linux系統自帶的組件,主要文件簡單的分析介紹:
\system\bin\akmd
\system\bin\am
\system\bin\app_process 系統進程
\system\bin\dalvikvm Dalvik虛擬機宿主
\system\bin\dbus-daemon 系統BUS總線監控
\system\bin\debuggerd 調試器
\system\bin\debug_tool 調試工具
\system\bin\dexopt DEX選項
\system\bin\dhcpcd DHCP服務器
\system\bin\dumpstate 狀態抓取器
\system\bin\dumpsys 系統抓取器
\system\bin\dvz
\system\bin\fillup
\system\bin\flash_image 閃存映像
\system\bin\hciattach
\system\bin\hcid HCID內核
\system\bin\hostapd
\system\bin\hostapd_cli
\system\bin\htclogkernel
\system\bin\input
\system\bin\installd
\system\bin\itr
\system\bin\linker
\system\bin\logcat Logcat日志打印
\system\bin\logwrapper
\system\bin\mediaserver
\system\bin\monkey
\system\bin\mountd 存儲掛載器
\system\bin\netcfg 網絡設置
\system\bin\ping Ping程序
\system\bin\playmp3 MP3播放器
\system\bin\pm 包管理器
\system\bin\qemud QEMU虛擬機
\system\bin\radiooptions 無線選項
\system\bin\rild RIL組件
\system\bin\sdptool
\system\bin\sdutil
\system\bin\service?
\system\bin\servicemanager 服務管理器
\system\bin\sh
\system\bin\ssltest SSL測試
\system\bin\surfaceflinger 觸摸感應驅動
\system\bin\svc 服務
\system\bin\system_server
\system\bin\telnetd Telnet組件
\system\bin\toolbox
\system\bin\wlan_loader
\system\bin\wpa_cli
\system\bin\wpa_supplicant
?
\system\etc
從文件夾名稱來看保存的都是系統的配置文件,比如APN接入點設置等核心配置。
\system\etc\apns-conf.xml APN接入點配置文件
\system\etc\AudioFilter.csv 音頻過濾器配置文件
\system\etc\AudioPara4.csv
\system\etc\bookmarks.xml 書簽數據庫
\system\etc\dbus.conf 總線監視配置文件
\system\etc\dhcpcd
\system\etc\event-log-tags
\system\etc\favorites.xml 收藏夾
\system\etc\firmware 固件信息
\system\etc\gps.conf GPS設置文件
\system\etc\hcid.conf??內核HCID配置文件
\system\etc\hosts 網絡DNS緩存
\system\etc\init.goldfish.sh
\system\etc\location 定位相關
\system\etc\mountd.conf 存儲掛載配置文件
\system\etc\NOTICE.html 提示網頁
\system\etc\permissions.xml 權限許可
\system\etc\pvplayer.conf?
\system\etc\security?
\system\etc\wifi WLAN相關組件
\system\etc\dhcpcd\dhcpcd-hooks
\system\etc\dhcpcd\dhcpcd-run-hooks
\system\etc\dhcpcd\dhcpcd.conf
\system\etc\dhcpcd\dhcpcd-hooks\01-test
\system\etc\dhcpcd\dhcpcd-hooks\20-dns.conf
\system\etc\dhcpcd\dhcpcd-hooks\95-configured
\system\etc\firmware\brf6300.bin
\system\etc\location\gps
[page_break]?
\system\etc\location\gps\location 定位相關
\system\etc\location\gps\nmea GPS數據解析
\system\etc\location\gps\properties
\system\etc\security\cacerts.bks
\system\etc\security\otacerts.zip OTA下載驗證
\system\etc\wifi\Fw1251r1c.bin
\system\etc\wifi\tiwlan.ini
\system\etc\wifi\wpa_supplicant.conf WPA驗證組件
?
\system\fonts
字體文件夾,除了標準字體和粗體、斜體外可以看到文件體積最大的可能是中文字庫,或一些unicode字庫,從T-Mobile G1上可以清楚的看到顯示簡體中文正常,其中DroidSansFallback.ttf文件大小
\system\fonts\DroidSans-Bold.ttf
\system\fonts\DroidSans.ttf
\system\fonts\DroidSansFallback.ttf
\system\fonts\DroidSansMono.ttf
\system\fonts\DroidSerif-Bold.ttf
\system\fonts\DroidSerif-BoldItalic.ttf
\system\fonts\DroidSerif-Italic.ttf
\system\fonts\DroidSerif-Regular.ttf
\system\framework
framework主要是一些核心的文件,從后綴名為jar可以看出是是系統平臺框架。
\system\framework\am.jar
\system\framework\am.odex
\system\framework\android.awt.jar AWT庫
\system\framework\android.awt.odex
\system\framework\android.policy.jar?
\system\framework\android.policy.odex
\system\framework\android.test.runner.jar
\system\framework\android.test.runner.odex
\system\framework\com.google.android.gtalkservice.jar GTalk服務
\system\framework\com.google.android.gtalkservice.odex
\system\framework\com.google.android.maps.jar 電子地圖庫
\system\framework\com.google.android.maps.odex
\system\framework\core.jar 核心庫,啟動桌面時首先加載這個
\system\framework\core.odex
\system\framework\ext.jar
\system\framework\ext.odex
\system\framework\framework-res.apk
\system\framework\framework-tests.jar
\system\framework\framework-tests.odex
\system\framework\framework.jar
\system\framework\framework.odex
\system\framework\input.jar 輸入庫
\system\framework\input.odex
\system\framework\itr.jar
\system\framework\itr.odex
\system\framework\monkey.jar
\system\framework\monkey.odex
\system\framework\pm.jar 包管理庫
\system\framework\pm.odex
\system\framework\services.jar
\system\framework\services.odex
\system\framework\ssltest.jar
\system\framework\ssltest.odex
\system\framework\svc.jar 系統服務
\system\framework\svc.odex
\system\lib
lib目錄中存放的主要是系統底層庫,如平臺運行時庫。
\system\lib\libaes.so?
\system\lib\libagl.so
\system\lib\libandroid_runtime.so Android運行時庫
\system\lib\libandroid_servers.so 系統服務組件
\system\lib\libaudio.so 音頻處理
\system\lib\libaudioeq.so EQ均衡器
\system\lib\libaudioflinger.so 音頻過濾器
\system\lib\libbluetooth.so 藍牙組件
\system\lib\libc.so
\system\lib\libcamera.so 超相機組件
\system\lib\libcameraservice.so
\system\lib\libcorecg.so
\system\lib\libcrypto.so 加密組件
\system\lib\libctest.so
\system\lib\libcutils.so
\system\lib\libdbus.so
\system\lib\libdl.so
\system\lib\libdrm1.so DRM解析庫
\system\lib\libdrm1_jni.so
\system\lib\libdvm.so
\system\lib\libexif.so
\system\lib\libexpat.so
\system\lib\libFFTEm.so
\system\lib\libGLES_CM.so
\system\lib\libgps.so
\system\lib\libhardware.so
\system\lib\libhgl.so
\system\lib\libhtc_ril.so
\system\lib\libicudata.so
\system\lib\libicui18n.so
\system\lib\libicuuc.so
\system\lib\liblog.so
\system\lib\libm.so
\system\lib\libmedia.so
\system\lib\libmediaplayerservice.so
\system\lib\libmedia_jni.so
\system\lib\libnativehelper.so
\system\lib\libnetutils.so
\system\lib\libOmxCore.so
\system\lib\libOmxH264Dec.so
\system\lib\libpixelflinger.so
\system\lib\libpvasf.so
\system\lib\libpvasfreg.so
\system\lib\libpvauthor.so
\system\lib\libpvcommon.so
\system\lib\libpvdownload.so
\system\lib\libpvdownloadreg.so
\system\lib\libpvmp4.so
\system\lib\libpvmp4reg.so
\system\lib\libpvnet_support.so
\system\lib\libpvplayer.so
\system\lib\libpvrtsp.so
\system\lib\libpvrtspreg.so
\system\lib\libqcamera.so
\system\lib\libreference-ril.so
\system\lib\libril.so
\system\lib\librpc.so
\system\lib\libsgl.so
\system\lib\libsonivox.so
\system\lib\libsoundpool.so
\system\lib\libsqlite.so
\system\lib\libssl.so
\system\lib\libstdc++.so
\system\lib\libsurfaceflinger.so
\system\lib\libsystem_server.so
\system\lib\libthread_db.so
\system\lib\libUAPI_jni.so
\system\lib\libui.so
\system\lib\libutils.so
\system\lib\libvorbisidec.so
\system\lib\libwbxml.so
\system\lib\libwbxml_jni.so
\system\lib\libwebcore.so
\system\lib\libwpa_client.so
\system\lib\libxml2wbxml.so
\system\lib\libz.so
\system\lib\modules
\system\lib\modules\wlan.ko
?
\system\media
鈴聲音樂文件夾,除了常規的鈴聲外還有一些系統提示事件音
\system\media\audio
\system\media\audio\alarms 鬧鈴音
\system\media\audio\notifications 提示音
\system\media\audio\ringtones 鈴聲
\system\media\audio\ui 界面操作事件音
\system\media\audio\alarms\Alarm_Beep_01.ogg
\system\media\audio\alarms\Alarm_Beep_02.ogg
\system\media\audio\alarms\Alarm_Beep_03.ogg
\system\media\audio\alarms\Alarm_Buzzer.ogg
\system\media\audio\alarms\Alarm_Classic.ogg
\system\media\audio\alarms\Alarm_Rooster_02.ogg
\system\media\audio\notifications\Beat_Box_Android.ogg
\system\media\audio\notifications\CaffeineSnake.ogg
\system\media\audio\notifications\DearDeer.ogg
\system\media\audio\notifications\DontPanic.ogg
\system\media\audio\notifications\F1_MissedCall.ogg
\system\media\audio\notifications\F1_New_MMS.ogg
\system\media\audio\notifications\F1_New_SMS.ogg
\system\media\audio\notifications\Heaven.ogg
\system\media\audio\notifications\Highwire.ogg
\system\media\audio\notifications\KzurbSonar.ogg
\system\media\audio\notifications\OnTheHunt.ogg
\system\media\audio\notifications\TaDa.ogg
\system\media\audio\notifications\Tinkerbell.ogg
\system\media\audio\notifications\Voila.ogg
\system\media\audio\ringtones\BeatPlucker.ogg
\system\media\audio\ringtones\BentleyDubs.ogg
\system\media\audio\ringtones\BirdLoop.ogg
\system\media\audio\ringtones\CaribbeanIce.ogg
\system\media\audio\ringtones\CrazyDream.ogg
\system\media\audio\ringtones\CurveBall.ogg
\system\media\audio\ringtones\DreamTheme.ogg
\system\media\audio\ringtones\EtherShake.ogg
\system\media\audio\ringtones\FriendlyGhost.ogg
\system\media\audio\ringtones\GameOverGuitar.ogg
\system\media\audio\ringtones\Growl.ogg
\system\media\audio\ringtones\InsertCoin.ogg
\system\media\audio\ringtones\LoopyLounge.ogg
\system\media\audio\ringtones\LoveFlute.ogg
\system\media\audio\ringtones\MidEvilJaunt.ogg
\system\media\audio\ringtones\MildlyAlarming.ogg
\system\media\audio\ringtones\NewPlayer.ogg
\system\media\audio\ringtones\Noises1.ogg
\system\media\audio\ringtones\Noises2.ogg
\system\media\audio\ringtones\Noises3.ogg
\system\media\audio\ringtones\OrganDub.ogg
\system\media\audio\ringtones\Ring_Classic_02.ogg
\system\media\audio\ringtones\Ring_Digital_02.ogg
\system\media\audio\ringtones\Ring_Synth_02.ogg
\system\media\audio\ringtones\Ring_Synth_04.ogg
\system\media\audio\ringtones\RomancingTheTone.ogg
\system\media\audio\ringtones\SitarVsSitar.ogg
\system\media\audio\ringtones\SpringyJalopy.ogg
\system\media\audio\ringtones\T-Jingle.ogg
\system\media\audio\ringtones\Terminated.ogg
\system\media\audio\ringtones\TwirlAway.ogg
\system\media\audio\ringtones\VeryAlarmed.ogg
\system\media\audio\ringtones\World.ogg
\system\media\audio\ui\Effect_Tick.ogg
?
\system\sounds
默認的音樂測試文件,僅有一個test.mid文件,用于播放測試的文件。
\system\sounds\test.mid
?
\system\usr
用戶文件夾,包含共享、鍵盤布局、時間區域文件等。
\system\usr\keychars
\system\usr\keylayout
\system\usr\share
\system\usr\srec
\system\usr\keychars\qwerty.kcm.bin
\system\usr\keychars\qwerty2.kcm.bin
\system\usr\keychars\trout-keypad-qwertz.kcm.bin
\system\usr\keychars\trout-keypad-v2.kcm.bin
\system\usr\keychars\trout-keypad-v3.kcm.bin
\system\usr\keychars\trout-keypad.kcm.bin
\system\usr\keylayout\h2w_headset.kl
\system\usr\keylayout\qwerty.kl
\system\usr\keylayout\trout-keypad-qwertz.kl
\system\usr\keylayout\trout-keypad-v2.kl
\system\usr\keylayout\trout-keypad-v3.kl
\system\usr\keylayout\trout-keypad.kl
\system\usr\share\bsk
\system\usr\share\zoneinfo
\system\usr\share\bsk\V_FD_speed_101.bsk
\system\usr\share\bsk\V_FD_std_101.bsk
\system\usr\share\zoneinfo\zoneinfo.dat
\system\usr\share\zoneinfo\zoneinfo.idx
\system\usr\srec\config
\system\usr\srec\config\en.us
\system\usr\srec\config\en.us\baseline.par
\system\usr\srec\config\en.us\baseline11k.par
\system\usr\srec\config\en.us\baseline8k.par
\system\usr\srec\config\en.us\dictionary
\system\usr\srec\config\en.us\g2p
\system\usr\srec\config\en.us\grammars
\system\usr\srec\config\en.us\models
\system\usr\srec\config\en.us\dictionary\basic.ok
\system\usr\srec\config\en.us\dictionary\cmu6plus.ok.zip
\system\usr\srec\config\en.us\dictionary\enroll.ok
\system\usr\srec\config\en.us\g2p\en-US-ttp.data
\system\usr\srec\config\en.us\grammars\VoiceDialer.g2g
\system\usr\srec\config\en.us\models\generic.swiarb
\system\usr\srec\config\en.us\models\generic11.lda
\system\usr\srec\config\en.us\models\generic11_f.swimdl
\system\usr\srec\config\en.us\models\generic11_m.swimdl
\system\usr\srec\config\en.us\models\generic8.lda
\system\usr\srec\config\en.us\models\generic8_f.swimdl
\system\usr\srec\config\en.us\models\generic8_m.swimdl
整個Android平臺的文件不止是這么多,部分文件在/data文件夾中都是用戶文件夾,這里就不介紹了。
?
/system/framework?
這會放 Android 系統的核心程式庫。像是 core.jar, framework-res.apk, com.google.android.gtalkservice.jar,...等等。疑,1.0r1 不是已經將 gtalk 等相關 APIs 移除了嗎?怎麼他的程式庫還在?雖然許多程式庫都是以 jar 結尾的,不過裡面?Java?classes 還是以 dex 格式存在著。
/system/app 放的是系統預載的應用程式執行檔。而這裡放的是使用者自己安裝的應用程式執行檔 (*.apk)。/data/data/<app-package-name>?
當你在程式中用 Context.openFileOutput() 所建立的檔案,都放在這個目錄下的 files 子目錄內。而用 Context.getSharedPreferences() 所建立的 preferences 檔 (*.xml) ,則是放在 shared_pref 這個子目錄中。/data/location/gps?