AndroidFramework框架分析_第1頁(yè)
AndroidFramework框架分析_第2頁(yè)
AndroidFramework框架分析_第3頁(yè)
AndroidFramework框架分析_第4頁(yè)
AndroidFramework框架分析_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Androidframeworkanalysis(partIzt)AndroidFramework分析(一)1.目錄樹(shù)/framework/base/api/framework/base/awt/framework/base/build/framework/base/camera關(guān)于camera的HAL接口庫(kù)。最終生成native共享庫(kù)libcamera.so,編譯時(shí)根據(jù)是否定義USE_CAMERA_STUB來(lái)決定系統(tǒng)是否有Camera硬件支持。若沒(méi)有實(shí)際的Camera硬件,則編譯時(shí)會(huì)和虛擬camera靜態(tài)庫(kù)(libcamerastub.a,由camerahardwarestub.cpp,fa

2、kecamera生成)鏈接生成libcamera.so。/framework/base/cmds關(guān)于android系統(tǒng)啟動(dòng)時(shí)用到的command等/framework/base/cmds/am/framework/base/cmds/app_process可執(zhí)行文件app_process,該文件可以根據(jù)輸入?yún)?shù)決定是Zygote啟動(dòng)(參考init.rc中的語(yǔ)句servicezygote/system/bin/app_process-Xzygote/system/bin-zygote-start-system-server)該執(zhí)行程式會(huì)鏈接libandroid_runtime.so去鏈接andr

3、oidruntime后面我會(huì)在詳細(xì)分析此部分。/framework/base/cmds/backup可執(zhí)行程式btool/framework/base/cmds/bmgrjava可執(zhí)行程式,backupmanager,java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/bmgr.jar/framework/base/cmds/bootanimationandroid啟動(dòng)動(dòng)畫(huà)效果程式,該程式必須在androidruntime啟動(dòng)后運(yùn)行/framework/base/cmds/dumpstateandroid系統(tǒng)調(diào)試輔助工具,生成可執(zhí)行程式dumpstate,同時(shí)建立兩個(gè)程式dumpc

4、rashbugreport指向該程式。/framework/base/cmds/dumpsys生成可執(zhí)行程式dumpsys/framework/base/cmds/imejava可執(zhí)行程式,IME輸入法inputmethodmanager,java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/ime.jar/framework/base/cmds/inputjava可執(zhí)行程式,管理input事件例如keyevent,textevent等,java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/input.jar/framework/base/cmds/installd可執(zhí)行程

5、式installd,installmanager,僅在非simulator系統(tǒng)中運(yùn)行,安裝到目標(biāo)系統(tǒng)/system/bin/installd/framework/base/cmds/keystore可執(zhí)行程式keystore,用途??jī)H在非simulator系統(tǒng)中運(yùn)行,安裝到目標(biāo)系統(tǒng)/system/bin/keystore/framework/base/cmds/pmjava可執(zhí)行程式,packagemanager,java庫(kù)形式分發(fā)到目標(biāo)系統(tǒng)/system/framework/pm.jar/framework/base/cmds/runtimeruntime可執(zhí)行程式,僅在simulator中

6、使用/framework/base/cmds/serviceservice可執(zhí)行程式,用來(lái)查找,檢查,呼叫service,安裝到目標(biāo)系統(tǒng)/system/bin/service/framework/base/cmds/servicemanagerandroid系統(tǒng)的servicemanager,可執(zhí)行文件,安裝到目標(biāo)系統(tǒng)/system/bin/servicemanagerservicemanager會(huì)和kernel的binderdriver協(xié)作共同完成service的添加、查詢(xún)、獲取、檢查等。/framework/base/cmds/surfaceflingersurfaceflinger可執(zhí)行

7、程式,安裝到目標(biāo)系統(tǒng)/system/bin/surfaceflinger,該程式會(huì)初始化surfaceflinger,surfaceflinger:inistantiate(),該程式會(huì)鏈接到libsurfaceflinger.so/framework/base/cmds/svc/framework/base/cmds/system_serversystemserver庫(kù)libsystem_server.so->system/lib/libsystem_server.so和system_server執(zhí)行程式->system/bin/system_server.該可執(zhí)行程式不清楚什么

8、用途?/framework/core/framework/core/config幾個(gè)簡(jiǎn)單java常量,(debug標(biāo)志等)/framework/core/java/*framework的核心,此處主要指applicationframework,java庫(kù)形式分發(fā)到/system/framework/包括framework.jar,framework-tests.jarsure?/framework/core/jniframework所需的JNI接口實(shí)現(xiàn)庫(kù),分發(fā)到/system/lib/lib/libandroid_runtime.so/framework/core/resframework所需

9、的資源文件打包,/system/framework/framework-res.apk,/framework/libs/framework/libs/audioflinger,生成libaudioflinger.so,若無(wú)實(shí)際硬件和靜態(tài)庫(kù)libaudiointerface.aaudiointerface虛擬設(shè)備)鏈接。/framework/libs/surfaceflinger生成libsurfaceflinger.so/framework/libs/ui生成libui.so/framework/libs/utils生成libutils.so/framework/services/java/*

10、systemserverjava可執(zhí)行程式service.jar,分發(fā)到/system/framework/service.jar/framework/services/jni/*systemserverJNI接口實(shí)現(xiàn)庫(kù),libanroid_servers.so,分發(fā)到/system/lib/libanroid_servers.soandroidframework分析(二)啟動(dòng)Zygote-Xzygote/system/bin-zygote-start-system-serverAndroidRuntime->AppRuntimeintmain(intargc,constchar*con

11、stargv)AppRuntimeruntime;生成AndroidRuntime實(shí)例AndroidRuntime.Start("ernal.os.ZygoteInit",startSystemServer);其中AndroidRuntime.Start("ernal.os.ZygoteInit",startSystemServer);呼叫Android:Start(constchar*className,constboolstartSystemServer)/framework/base/co

12、re/jni/AndroidRuntime.cpp該函數(shù)的處理內(nèi)容:1. 處理JaveVirtualMachine的一些參數(shù)選項(xiàng);2. 創(chuàng)建DalvikJava虛擬機(jī),JNI_CreateJavaVM(&mJavaVM,&env,&initArgs);3. 注冊(cè)AndroidRuntime中的JNI接口給虛擬機(jī);4. 呼叫Java類(lèi)ernal.os.ZygoteInit的main函數(shù)在類(lèi)ernal.os.ZygoteInit的main函數(shù)中,1. 注冊(cè)Zygotesocket用來(lái)接收請(qǐng)求;2. 加載preloa

13、dedclass、resources用來(lái)加快啟動(dòng)速度,文件清單在framework.jar中的preloaded-classes,framework-res.apk中的res中;3. 啟動(dòng)SystemServer;fork出獨(dú)立的進(jìn)程名稱(chēng)為system-server,呼叫com.android.server.SystemServer類(lèi)的main函數(shù);在HandleSystemServerProcess函數(shù)中,RuntimeInit.ZygoteInit調(diào)用會(huì)呼叫AppRuntime的OnZygoteInit函數(shù)4. RuntimeInit.ZygoteInit函數(shù)會(huì)呼叫com.android.

14、server.SystemServer類(lèi)的main函數(shù)。在此main函數(shù)中,系統(tǒng)首先加載android_server共享庫(kù)libandroid_server.so源代碼位于/framework/base/service/jni在該庫(kù)中有定義JNI_OnLoad函數(shù),所以Dalvik在加載libandroid_server.so的時(shí)候會(huì)首先呼叫該JNI_OnLoad函數(shù),該函數(shù)將androidserver注冊(cè)到Java虛擬機(jī)中,包括KeyInputQueue,HardwareService,AlarmManager,BatteryService,SensorService,SystemServe

15、r呼叫在libanroid_server.so中注冊(cè)的native函數(shù)init1,該函數(shù)位于/frameworks/base/services/jni/com_android_server_SystemServer.cpp中;init1函數(shù)呼叫l(wèi)ibsystem_server中的system_init函數(shù),該函數(shù)位于/frameworks/base/cmds/system_server/library/system_init.cpp中,該函數(shù)將SurfaceFlinger/AudioFlinger/MediaPlayer/CameraService等組件注冊(cè)到ServiceManager中sy

16、stem_init函數(shù)反過(guò)來(lái)呼叫java類(lèi)com.android.server.SystemServer的init2函數(shù);5. 在init2函數(shù)中,android創(chuàng)建了serverthread,在該thread中android開(kāi)始注冊(cè)各種service到servicemanager中包括EntropyService,PowerManager,ActivityManager,Telephony,PackageManager,ContentManager,ContentProvider,BatteryService,HardwareService,AlarmManager等等。注意該線程使用Loo

17、per來(lái)執(zhí)行thread至此androidsystemserver啟動(dòng)完成。本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出framework主要是一些核心的文件,從后綴名為jar可以看出是是系統(tǒng)平臺(tái)框架。systemframeworkam.jarsystemframeworkam.odexsystemframeworkandroid.awt.jarAWT庫(kù)systemframeworkandroid.awt.odexsystemframeworkandroid.policy.jarsystemframeworkandroid.policy.odexsystemframeworkandroid.test.r

18、unner.jarsystemframeworkandroid.test.runner.odexsystemframeworkcom.google.android.gtalkservice.jarGTalk服務(wù)systemframeworkcom.google.android.gtalkservice.odexsystemframeworkcom.google.android.maps.jar電子地圖庫(kù)systemframeworkcom.google.android.maps.odexsystemframeworkcore.jar核心庫(kù),啟動(dòng)桌面時(shí)首先加載這個(gè)systemframeworkcore.odexsystemframeworkext.jarsystemframeworkext.odexsystemframeworkframework-res.apksystemframeworkframework-tests.jarsystemframeworkframework-tests.odexsystemframeworkframework.jarsystemframeworkframework.odexsystemframeworkinput.jar輸入庫(kù)systemframeworkinput.odexsy

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論