ANDROID框架結構和介紹
下圖是ANDROID4.4 版本包含的所有系統服務、本地服務和應用的框架圖,組織為三層:應用層、系統服務層、本地程序和服務層。應用層通常通過服務提供的對外API介面(一個服務管理物件)與服務互動,系統服務層通過JNI或者本地SOCKET與本地程序實現互動。
幾乎所有的系統服務層的服務(除了SenSorService)都是使用JAVA語言實現的,這些服務工作於同一個SystemServer程序,因此稱為系統服務。系統服務層的服務有些是系統內部使用的,沒有對應用層提供對外的API介面,這些服務在圖中用白色方框表示,包括電池服務BatteryService、感測器服務SenSorService、MountService、LockSettingsService、NetworkManagerService、NetworkStatsService、DeviceStorageMonitorService、EntropyMixer、ContentService、DiskStatsService、SamplingProfilerService、CommonTimeManagementService、DreamManagerService、AssetAtlasService。
該層的其它服務都對外提供一個管理物件供應用使用。
本地程序和服務採用C++語言實現,除了包括實現特殊功能的zygote程序(孵化程序,負責子程序的生成)和servicemanager程序(也稱為0號服務,所有其它服務必須在該程序中註冊才能被其它程序使用)外,還包括負責媒體功能的media 程序(該程序包括AudioFlinger、MediaPlayerService、CameraService、AudioPolicyService四個媒體相關的服務),負責圖形繪製的surfaceflinger程序,以及keystore(金鑰管理程序)、installd(包安裝程序)、ueventd(LINUX核心通訊程序)、healthd(電池健康管理程序)、vold(儲存卷的守護程序)、netd(網路守護程序,負責底層網路功能)、rild(電話raido
介面層守護程序,負責與底層radio的互動)、drm(數字版權管理程序)等。
因此可以說ANDROID系統就是各種服務的集合,通過服務之間的互動和配合共同實現了系統的所有功能。
如果掌握了每個服務的架構和工作機理,也就能夠深刻理解和掌握整個ANDROID作業系統,這也是本部落格ANDROID框架解析系列文章要達到的目的。