




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)合成纖維聚酯切片數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)仿皮表盒數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 河南省周口市扶溝縣2024-2025學(xué)年九年級(jí)上學(xué)期1月期末化學(xué)試題(含答案)
- 跳水闖關(guān)考試題及答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職法學(xué)能力測(cè)試試卷A卷附答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職政治學(xué)全真模擬考試試卷A卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能題庫(kù)檢測(cè)試卷B卷附答案
- 2024河北省中考英語(yǔ)真題含答案
- 郵輪切艙合同(2篇)
- 采購(gòu)追加合同范本(2篇)
- 2022年高級(jí)維修電工(三級(jí))理論考試題庫(kù)(附答案)
- 中醫(yī)基礎(chǔ)理論題庫(kù)及答案 (一)
- HG∕T 3642-2016 水處理劑 丙烯酸-2-甲基-2-丙烯酰胺基丙磺酸類(lèi)共聚物
- QCT1165-2022汽油乘用車(chē)炭罐用空氣濾清器
- DL5714-2014火力發(fā)電廠熱力設(shè)備及管道保溫防腐施工技術(shù)規(guī)范
- 選擇性必修二《Unit 3 Food and Culture》單元課件及小結(jié)
- 實(shí)驗(yàn)室廢液處理臺(tái)賬
- 2024年湖南省岳陽(yáng)市中考數(shù)學(xué)一模試卷
- 2024年江蘇護(hù)理職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完美版
- DZ∕T 0080-2010 煤炭地球物理測(cè)井規(guī)范(正式版)
- 2024年國(guó)家公務(wù)員考試時(shí)事政治必考試題庫(kù)(完整版)
評(píng)論
0/150
提交評(píng)論