九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Android系統(tǒng)層次結(jié)構(gòu)是怎樣的?各個層之間關(guān)系是什么?

 Android = Linux Kernel + C/C++ Runtime Framework + Davik Virtual Machine + Java Runtime Framework + Java SDK。下面我們再以APK的開發(fā)、編譯、安裝和運(yùn)行來說明這些層次之間的關(guān)系。

首先,我們是在PC上使用Android SDK提供的接口來開發(fā)APK,用的Java語言。開發(fā)完成之后,使用Java編譯器將源代碼編譯成Java字節(jié)碼,也就是帶.class后綴的文件。接下來這些.class再被Android SDK提供的dx工具轉(zhuǎn)化成Dex字節(jié)碼,最后打包在APK里面的classes.dex文件中。

接著,APK文件在手機(jī)上安裝時,Java Runtime Framework里面的PacakgeManagerService就會對該APK文件進(jìn)行解析,并且通過Socket IPC通知C/C++ Runtime Framework里面的installd守護(hù)進(jìn)程對APK里面的classes.dex文件進(jìn)行優(yōu)化,得到另外一個classes.odex文件。

APK安裝完成之后,就可以運(yùn)行了。我們以APK從桌面Launcher啟動的過程為例說明它的運(yùn)行過程。當(dāng)我們從Launcher點(diǎn)擊應(yīng)用圖標(biāo)的時候,Launcher向Java Runtime Framework里面的ActivityManagerService發(fā)送一個啟動應(yīng)用的請求。ActivityManagerService又通過Socket IPC向C/C++ Runtime Framework里面的zygote守護(hù)進(jìn)程請求創(chuàng)建一個應(yīng)用程序進(jìn)程。這個應(yīng)用程序進(jìn)程包含有一個Dalvik虛擬機(jī)。應(yīng)用程序進(jìn)程創(chuàng)建并且啟動起來之后,就會通過它里面的Dalvik虛擬機(jī)加載前面提到的classes.odex文件。這樣我們的應(yīng)用程序就運(yùn)行起來了。

APK的運(yùn)行過程是依賴于Dalvik虛擬機(jī)的。我們可以將它看成是將classes.odex里面的字節(jié)碼解釋成本地機(jī)器指令執(zhí)行。例如,我們在APK里面通過FileInputStream或者FileOutputStream打開一個文件的時候,Dalvik虛擬機(jī)就會找到C/C++ Runtime Framework里面的C庫bionic提供的系統(tǒng)接口open,并且通過它來打開指定的文件。

我們再以應(yīng)用程序界面的繪制和渲染過程來詳細(xì)說明各個層次的關(guān)系。首先是應(yīng)用程序通過SDK提供的UI類向Java Runtime Framework里面的WindowManagerService申請分配一塊圖形緩沖區(qū)。WindowManagerService又是通過Binder IPC向C/C++ Runtime Framework里面的SurfaceFlinger申請分配圖形緩沖區(qū)的。圖形緩沖區(qū)實(shí)際上不是由SurfaceFlinger分配的,而是由顯示系統(tǒng)分配的,可能在顯存里面,也有可能在GPU里面。這時候SurfaceFlinger就要通過HAL層次Gralloc模塊向Kernel里面的顯卡或者GPU驅(qū)動申請分配真正的圖形緩沖區(qū)。HAL層可以看作是運(yùn)行在C/C++ Runtime Framework中。

應(yīng)用程序得通過上述方式得到繪制UI所需要的圖形緩沖區(qū)之后,就開始繪制自己的UI了。假設(shè)應(yīng)用程序使用的是硬件繪制方式,也就是通過C/C++ Runtime Framework里面的OpenGL來繪制。這時候SDK的UI類的與繪制相關(guān)的函數(shù)調(diào)用通過Dalvik虛擬機(jī)都轉(zhuǎn)化成了C/C++ Runtime Framework里面的OpenGL操作。

應(yīng)用程序UI繪制完成之后,結(jié)果就保存上述的圖形緩沖區(qū)中。這時候如果要將該圖形緩沖區(qū)渲染到手機(jī)屏幕上,那么還需要通過Binder IPC將該圖形緩沖區(qū)發(fā)送給C/C++ Runtime Framework里面的SurfaceFlinger。SurfaceFlinger通過使用OpenGL或者HWComposer將所有請求要渲染到手機(jī)屏幕上的圖形緩沖區(qū)合成之后,得到一個主圖形緩沖區(qū)。最后這個圖形緩沖區(qū)又會被SurfaceFlinger提交給Kernel的顯卡驅(qū)動,并且在手機(jī)屏幕上進(jìn)行顯示。

上面描述的就是Android系統(tǒng)各個層次的調(diào)用關(guān)系。總的來說,應(yīng)用程序運(yùn)行在Dalvik虛擬機(jī)上,并且通過SDK使用Java Runtime Framework里面的服務(wù),而Java Runtime Framework里面的服務(wù)又通過C/C++ Runtime Framework里面的服務(wù)來實(shí)現(xiàn)自己的功能,最后C/C++ Runtime Framework里面的服務(wù)又會在需要的時候請求Kernel里面的模塊或者驅(qū)動來為自己服務(wù)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android Framework 分析
[譯]Android Graphics I 簡介
Android開發(fā)之旅:android架構(gòu)
OMS系統(tǒng)有何強(qiáng)大之處 OPhone全方位解析
【Android 】你了解嗎?
Android逆向基礎(chǔ)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服