版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Android的開機(jī)流程1. 系統(tǒng)引導(dǎo)bootloader1) 源源碼:bboottablle/bboottloaaderr/*2) 說說明:加加電后,CCPU將將先執(zhí)行行boootlooadeer程序序,此處處有三種種選擇a) 開開機(jī)按CCameera+Powwer啟啟動到ffasttbooot,即即命令或或SD卡卡燒寫模模式,不不加載內(nèi)內(nèi)核及文文件系統(tǒng)統(tǒng),此處處可以進(jìn)進(jìn)行工廠廠模式的的燒寫b) 開開機(jī)按HHomee+Poowerr啟動到到reccoveery模模式,加加載reecovveryy.immg,rrecooverry.iimg包包含內(nèi)核核,基本本的文件件系統(tǒng),用用于工程程模式的的
2、燒寫c) 開開機(jī)按PPoweer,正正常啟動動系統(tǒng),加加載booot.imgg,booot.imgg包含內(nèi)內(nèi)核,基基本文件件系統(tǒng),用用于正常常啟動手手機(jī)(以以下只分分析正常常啟動的的情況)2. 內(nèi)核核kerrnell1) 源源碼:kkernnel/*2) 說說明:kkernnel由由boootlooadeer加載載3. 文件件系統(tǒng)及及應(yīng)用iinitt1) 源源碼:ssysttem/corre/iinitt/*2) 配配置文件件:syysteem/rroottdirr/innit.rc,3) 說說明:iinitt是一個個由內(nèi)核核啟動的的用戶級級進(jìn)程,它它按照iinitt.rcc中的設(shè)設(shè)置執(zhí)行行:
3、啟動動服務(wù)(這這里的服服務(wù)指llinuux底層層服務(wù),如如adbbd提供供adbb支持,vvoldd提供SSD卡掛掛載等),執(zhí)執(zhí)行命令令和按其其中的配配置語句句執(zhí)行相相應(yīng)功能能4. 重要要的后臺臺程序zzygoote1) 源源碼:fframmewoorkss/baase/cmdds/aapp_maiin.ccpp等等2) 說說明:zzygoote是是一個在在iniit.rrc中被被指定啟啟動的服服務(wù),該該服務(wù)對對應(yīng)的命命令是/sysstemm/biin/aapp_proocesssa) 建建立Jaava Runntimme,建建立虛擬擬機(jī)b) 建建立Soockeet接收收ActtiviityM
4、ManaangeerSeerviice的的請求,用用于Foork應(yīng)應(yīng)用程序序c) 啟啟動Syysteem SServver5. 系統(tǒng)統(tǒng)服務(wù)ssysttem serrverr1) 源源碼:fframmewoorkss/baase/serrvicces/javva/ccom/anddroiid/sservver/SysstemmSerrverr.jaava2) 說說明:被被zyggotee啟動,通通過Syysteem MManaagerr管理aandrroidd的服務(wù)務(wù)(這里里的服務(wù)務(wù)指frrameeworrks/basse/sservvicees下的的服務(wù),如如衛(wèi)星定定位服務(wù)務(wù),剪切切板服務(wù)務(wù)等
5、)6. 桌面面lauunchher1) 源源碼:AActiivittyMaanaggerSServvicee.jaava為為入口,ppackkagees/aappss/laaunccherr*實現(xiàn)現(xiàn)2) 說說明:系系統(tǒng)啟動動成功后后SysstemmSerrverr使用xxxx.sysstemmReaady()通知知各個服服務(wù),系系統(tǒng)已經(jīng)經(jīng)就緒,桌桌面程序序Homme就是是在AcctivvityyMannageerSeerviice.sysstemmReaady()通知知的過程程中建立立的,最最終調(diào)用用 ()啟啟lauunchher7. 解鎖鎖1) 源源碼:fframmewoorkss/pool
6、icciess/baase/phoone/comm/anndrooid/intternnal/pollicyy/immpl/*loock*2) 說說明:系系統(tǒng)啟動動成功后后SysstemmSerrverr調(diào)用wwm.ssysttemRReaddy()通知WWinddowMManaagerrSerrvicce,進(jìn)進(jìn)而調(diào)用用PhooneWWinddowMManaagerr,最終終通過LLockkPattterrnKeeyguuarddVieew顯示示解鎖界界面,跟跟蹤代碼碼可以看看到解鎖鎖界面并并不是一一個Acctivvityy,這是是只是向向特定層層上繪圖圖,其代代碼了存存放在特特殊的位位置8.
7、 開機(jī)機(jī)自啟動動的第三三方應(yīng)用用程序1) 源源碼:fframmewoorkss/baase/serrvicces/javva/ccom/anddroiid/sservver/am/ActtiviityMManaagerrSerrvicce.jjavaa2) 說說明:系系統(tǒng)啟動動成功后后SysstemmSerrverr調(diào)用AActiivittyMaanaggerNNatiive.gettDeffaullt().syysteemReeadyy()通通知AcctivvityyMannageer啟動動成功,AActiivittyMaanagger會會通過置置變量mmBoootinng,通通知它的的另一
8、線線程,該該線程會會發(fā)送廣廣播tentt.acctioon.BBOOTT_COOMPLLETEED以告告知已注注冊的第第三方程程序在開開機(jī)時自自動啟動動。9. 總結(jié)結(jié)綜上所所述,系系統(tǒng)層次次關(guān)于啟啟動最核核心的部部分是zzygoote(即appp_pproccesss)和ssysttem serrverr,zyygotte它負(fù)負(fù)責(zé)最基基本的虛虛擬機(jī)的的建立,以以支持各各個應(yīng)用用程序的的啟動,而而sysstemm seerveer用于于管理aandrroidd后臺服服務(wù),啟啟動步驟驟及順序序。10. 參參考 HYPERLINK /basonjiang_sz/category/648399.asp
9、x http:/t/baasonnjiaang_sz/cattegoory/64883999.asspxAndrooid 啟動過過程詳解解Androoid從從Linnux系系統(tǒng)啟動動有4個個步驟;(1) iinitt進(jìn)程啟啟動(2) NNatiive服服務(wù)啟動動(3) SSysttem Serrverr,Anndrooid服服務(wù)啟動動(4) HHomee啟動總體啟動框框架圖如如:第一步:iinittiall進(jìn)程(ssysttem/corre/iinitt) iniit進(jìn)程程,它是是一個由由內(nèi)核啟啟動的用用戶級進(jìn)進(jìn)程。內(nèi)內(nèi)核自行行啟動(已已經(jīng)被載載入內(nèi)存存,開始始運(yùn)行,并并已初始始化所有有的設(shè)備
10、備驅(qū)動程程序和數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)等)之之后,就就通過啟啟動一個個用戶級級程序iinitt的方式式,完成成引導(dǎo)進(jìn)進(jìn)程。iinitt始終是是第一個個進(jìn)程.Init.rcInit.marrvelll.rrcInit進(jìn)進(jìn)程一起起來就根根據(jù)innit.rc和和iniit.xxxx.rc腳腳本文件件建立了了幾個基基本的服服務(wù):servviceemannamgger zygoote 。最后Iniit并不不退出,而而是擔(dān)當(dāng)當(dāng)起prropeertyy seerviice的的功能。1.1腳本本文件initSysstemm/Coore/IniitInit.c: parrse_connfigg_fiile(Iniit.rr
11、c) pparsse_cconffig_fille(IInitt.maarveel.rrc)解析腳本文文件:IInitt.rcc和Innit.xxxxx.rrc(硬硬件平臺臺相關(guān))Init.rc是是Anddroiid自己己規(guī)定的的初始化化腳本(Anddroiid IInitt Laanguuagee, SSysttem/Corre/IInitt/reeadmme.ttxt)該腳本包含含四個類類型的聲聲明:Actioons Commaandss Serviicess Optioons. 1.2 服服務(wù)啟動動機(jī)制我們來看看看Iniit是這這樣解析析.rcc文件開開啟服務(wù)務(wù)的。(1)打開開.rcc文
12、件,解解析文件件內(nèi)容 syysteem/ccoree/innit/iniit.cc將servvicee信息放放置到sservvicee_liist中中。 sysstemm/coore/iniit pparsser.c(2)reestaart_serrvicce() ssysttem/corre/iinitt/innit.c servvicee_sttartt execcve().建立sservvicee進(jìn)程。第二步 ZZygoote Servviceemannageer和zzygoote進(jìn)進(jìn)程就奠奠定了AAndrroidd的基礎(chǔ)礎(chǔ)。Zyygotte這個個進(jìn)程起起來才會會建立起起真正的的Andd
13、roiid運(yùn)行行空間,初初始化建建立的SServvicee都是NNavttivee seerviice.在.rrc腳本本文件中中zyggotee的描述述:serviice zyggotee /ssysttem/binn/appp_pproccesss -XXzyggotee /ssysttem/binn -zyggotee -staart-sysstemm-seerveer所以Zyggotee從maain()fraamewworkks/bbasee/cmmds/appp_maain.cppp開始。(1) mmainn()frrameeworrks/basse/ccmdss/appp_mmain
14、n.cppp建立Javva RRunttimee runtiime.staart(coom.aandrroidd.innterrnall.oss.ZyygotteInnit, sstarrtSyysteemSeerveer); (2) rrunttimee.sttarttAnndrooidRRunttimee.cppp建立虛擬機(jī)機(jī) 運(yùn)行:coom.aandrroidd.innterrnall.oss.ZyygotteInnit:maiin函數(shù)數(shù)。 (3)maain()ccom.anddroiid.iinteernaal.oos.ZZygooteIInitt/正正真的ZZygoote。regis
15、sterrZyggoteeSocckett();/登登記Liisteen端口口 starttSysstemmSerrverr(); 進(jìn)入Zyggotee服務(wù)框框架。 經(jīng)過這幾個個步驟,ZZygoote就就建立好好了,利利用Soockeet通訊訊,接收收ActtiviityMManaangeerSeerviice的的請求,F(xiàn)Forkk應(yīng)用程程序。第三步 SSysttem Serrverr HYPERLINK mailto:startSystemServerernal.os.ZygoteInit在Zygote starttSysstemmSerrverrcoom.aandrroidd.innter
16、rnall.oss.ZyygotteInnit在在Zyggotee上foork了了一個進(jìn)進(jìn)程:comm.anndrooid.serrverr.SyysteemSeerveer.于于是SyysteemSeerveer(SysstemmSerrverr.jaava)就就建立了了。Anndrooid的的所有服服務(wù)循環(huán)環(huán)框架都都是建立立SysstemmSerrverr(SSysttemSServver.javva)上上。在SSysttemSServver.javva中看看不到循循環(huán)結(jié)構(gòu)構(gòu),只是是可以看看到建立立了innit22的實現(xiàn)現(xiàn)函數(shù),建建立了一一大堆服服務(wù),并并AdddSerrvicce到sse
17、rvvicee Maanagger。main() coom/aandrroidd/seerveer/SSysttemSServver initt1();Init11()是是在Naativve空間間實現(xiàn)的的(coom_aandooirdd_seerveer_ssysttemSServver.cppp)。我我們一看看這個函函數(shù)就知知道了,iinitt1-sysstemm_innit() Sysstemm_innit.cppp在systtem_iniit()我們看看到了循循環(huán)閉合合管理框框架。 Calll ccom/anddroiid/sservver/SysstemmSerrverr, innit
18、22 . ProccesssStaate:seelf()-staartTThreeadPPooll(); IPCCThrreaddStaate:seelf()-joiinThhreaadPoool();init22()SysstemmSerrverr.jaava中中建立了了Anddroiid中所所有要用用到的服服務(wù)。這個iniit2()建建立了一一個線程程,來NNew Serrvicce和AAddSServvicee來建立立服務(wù)第三步 HHomee啟動 HYPERLINK mailto:在ServerThreadSystemServer.java 在ServverTThreeadSysstem
19、mSerrverr.jaava后后半段,我我們可以以看到系系統(tǒng)在啟啟動完所所有的AAndrroidd服務(wù)后后,做了了這樣一一些動作作:(1) 使使用xxxx.ssysttemRReaddy()通知各各個服務(wù)務(wù),系統(tǒng)統(tǒng)已經(jīng)就就緒。(2) 特別對對于AcctivvityyMannageerSeerviice.sysstemmReaady(回調(diào)) Widgget.walllpaaperr,immm(輸輸入法)等reeadyy通知。Home就就是在AActiivittyMaanaggerSServvicee.syysteemReeadyy()通通知的過過程中建建立的。下下面是AActiivittyMa
20、anaggerSServvicee.syysteemReeadyy()的的偽代碼碼:systeemReeadyy()ActtiviityMManaagerrSerrvicce.jjavaa resuumeTTopAActiivittyLoockeed() starrtHoomeAActiivittyLoockeed();/如果是是第一個個則啟動動HommeAcctivvityy。 starrtAcctivvityyLocckedd(。)CCATEEGORRY_HHOMEEAndrooid Boootinng:init is thee fiirstt prroceess aftter kerrn
21、ell sttartted. Thhe ccorrrespponddingg soourcce ccodee liies in: deevicce/ssysttem/iniit. It doees tthe folllowwingg taaskss sttep by steep: 1.Iniitiaalizze llog sysstemm. 2.Parrse /innit.rc andd /iinitt.%hharddwarre%.rc. 3. Exxecuute earrly-iniit aactiion in thee twwo ffilees pparssed in steep 22.
22、4. Deevicce sspeccifiic iinittiallizee. FFor exaamplle, makke aall devvicee noode in /deev aand dowwnlooad firrmwaaress. 5. Innitiialiize prooperrty sysstemm. AActuuallly tthe prooperrty sysstemm iss woorkiing as a ssharre mmemoory. Loogiccallly iit llookks llikee a reggisttry undder Winndowws ssyst
23、tem. 6. Exxecuute iniit aactiion in thee twwo ffilees pparssed in steep 22. 7. Sttartt prropeertyy seerviice. 8. Exxecuute earrly-booot aand booot aactiionss inn thhe ttwo filles parrsedd inn sttep 2. 9. Exxecuute prooperrty acttionn inn thhe ttwo filles parrsedd inn sttep 2. 10.EEnteer iintoo ann i
24、nndeffiniite looop tto wwaitt foor ddeviice/prooperrty sett/chhildd prroceess exiit eevennts. Foor eexammplee, iif aan SSD ccardd iss pllugiinedd, iinitt wiill recceivve aa deevicce aadd eveent, soo itt caan mmakee noode forr thhe ddeviice. Moost of thee immporrtannt pproccesss iss foorkeed iin iini
25、tt, sso iif aany of theem ccrasshedd, iinitt wiill recceivve aa SIIGCHHLD theen ttrannslaate it intto aa chhildd prroceess exiit eevennt, so in thee looop iniit ccan hanndlee thhe pproccesss exxit eveent andd exxecuute thee coommaandss deefinned in *.rrc(iit wwilll ruun ccommmandd onnresstarrt). The
26、 .rc fille iis aa sccrippt ffilee deefinned by Anddroiid. Thee deefauult is devvicee/syysteem/rroottdirr/innit.rc. Wee caan ttakee a looot aat tthe fille fformmat(devvicee/syysteem/iinitt/reeadmme.ttxt is a ggoodd ovveraall inttrodducttionn off thhe sscriipt). BBasiicallly thee sccrippt ffilee coont
27、aainss acctioons andd seerviicess. Actioons Actioons aree naamedd seequeencees oof ccommmandds. Acttionns hhavee a triiggeer wwhicch iis uusedd too deeterrminne wwhenn thhe aactiion shoouldd occcurr. Wheen aan eevennt ooccuurs whiich mattchees aan aactiions ttrigggerr, tthatt acctioon iis aaddeed tt
28、o tthe taiil oof aa too-bee-exxecuutedd quueuee (uunleess it is alrreaddy oon tthe queeue). Each acttionn inn thhe qqueuue iis ddequueueed iin ssequuencce aand eacch ccommmandd inn thhat acttionn iss exxecuutedd inn seequeencee. Iniit hhanddless ottherr acctivvitiies (deevicce ccreaatioon/ddesttrucc
29、tioon, prooperrty setttinng, proocesss rresttarttingg) bettweeen thee exxecuutioon oof tthe commmannds in acttiviitiees. Actioons takke tthe forrm oof: on . Serviicess Serviicess arre pproggramms wwhicch iinitt laauncchess annd (opttionnallly) resstarrts wheen ttheyy exxit. SServvicees ttakee thhe f
30、formm off: serviice * . Optioons Optioons aree moodiffierrs tto sservvicees. Thhey afffectt hoow aand wheen iinitt ruuns thee seerviice. Trigggerss Trigggerss arre sstriingss whhichh caan bbe uusedd too maatchh ceertaain kinnds of eveentss annd uusedd too caausee ann acctioon tto ooccuur. The bbuill
31、tinn suuppoorteed ccommmandds aare deffineed iin ddeviice/sysstemm/innit/keyyworrds.h. Commmannds aree immpleemenntd in devvicee/syysteem/iinitt/buultiins.c. The iinitt prrogrram onlly eexeccutees ffivee kiindss off trrigggerss: “eearlly-iinitt”, “innit”, “eearlly-bboott”, “booot”, “pproppertty:*”.
32、Takke aa loook at thee foolloowinng llinee inn deefauult iniit.rrc. classs_sttartt deefauult This linne iis aa coommaand forr thhe aactiion corrressponndinng tto “bboott” ttrigggerr. IIt wwilll sttartt alll sservvicees wwhosse cclasss nnamee eqqualls tto “ddefaaultt”. By deffaullt, if no claass optt
33、ionn iss deefinned forr a serrvicce, thee seerviices cclasss nnamee iss “ddefaaultt”. So thiis llinee wiill staart alll thhe sservvicees iin tthe ordder of possitiion in thee fiile by deffaullt. (BTTW, youu caan sstarrt aany serrvicce uusinng sstarrt ccommmandds, if youu liike.) AAny serrvicce iis r
34、run as a fforkked proocesss oof iinitt, ttakee a loook aat tthe souurcee coode of serrvicce_sstarrt iin ddeviice/sysstemm/innit.c. So acccorrdinng tto tthe deffaullt iinitt.rcc, tthe folllowwingg seerviicess wiill be exeecutted steep bby sstepp: consoole: sttar a sshelll. Thee soourcce iis iin ddevi
35、ice/sysstemm/biin/aash. adbd: sttartt addb ddaemmon. Thhe ssourrce is in devvicee/tooolss/addbd. Byy deefauult is dissablled. serviicemmanaagerr: sstarrt bbindder sysstemm. TThe souurcee iss inn deevicce/ccommmandds/bbindder. mounttd: mouunt alll fss deefinned in /syysteem/eetc/mouuntdd.coonf if sta
36、arteed, recceivve ccommmandds tthrooughh loocall soockeet tto mmounnt aany fs. Thhe ssourrce is in devvicee/syysteem/bbin/mouuntdd. debugggerrd: staart debbug sysstemm. TThe souurcee iss inn deevicce/ssysttem/binn/deebugggerrd. rild: sttartt raadioo innterrfacce llayeer ddaemmon. Thhe ssourrce is in
37、 devvicee/coommaandss/riind. zygotte: staart Anddroiid JJavaa Ruuntiime andd sttartt syysteem sservver. Itts thee moost impporttantt seerviice. Thhe ssourrce is in devvicee/seerveers/appp. mediaa: sstarrt AAudiioFllingger, MeediaaPlaayerrSerrvicce aand CammeraaSerrvicce. Thee soourcce iis iin ddevii
38、ce/commmannds/meddiasservver. bootssounnd: plaay tthe deffaullt bboott sooundd /ssysttem/meddia/auddio/ui/booot.mmp3. Thhe ssourrce is in devvicee/coommaandss/pllaymmp3. dbus: sttartt dbbus daeemonn, iitss onnly useed bby BBlueeZ. Thee soourcce iis iin ddeviice/sysstemm/Blluettootth/ddbuss-daaemoon.
39、 hcid: reedirrectt hccids sstdoout andd sttderrr tto tthe Anddroiid llogggingg syysteem. Thee soourcce iis iin ddeviice/sysstemm/biin/llogwwrappperr. BBy ddefaaultt iss diisabbledd. hfag: sttartt Blluettootth hhanddsfrree auddio gattewaay, its oonlyy ussed by BluueZ. Thhe ssourrce is in devvicee/syy
40、steem/BBlueetoooth/bluuez-utiils. Byy deefauult is dissablled. hsag: sttartt Blluettootth hheaddsett auudioo gaatewway, itts onlly uusedd byy BllueZZ. TThe souurcee iss inn deevicce/ssysttem/Bluuetooothh/blluezz-uttilss. BBy ddefaaultt iss diisabbledd. instaalldd: sstarrt iinsttalll paackaage daeemo
41、nn. TThe souurcee iss inn deevicce/sservverss/innstaalldd. flashh_reecovveryy: lloadd /ssysttem/reccoveery.imgg. TThe souurcee iss inn deevicce/ccommmandds/rrecooverry/mmtduutills. Zygotte sservvicee dooes thee foolloowinng ttaskks sstepp byy sttep: 1. Crreatte JJAVAA VMM. 2. Reegissterr anndrooid n
42、attivee fuuncttionn foor JJAVAA VMM. 3. Caall thee maain funnctiion in thee JAAVA claass nammed ternnal.os.ZyggoteeIniit wwhosse ssourrce is devvicee/jaava/anddroiid/ccom/anddroiid/iinteernaal/oos/ZZygooteIInitt.jaava. a) LLoadd ZyygotteInnit claass b) RRegiisteer zzygoote socckett c)LLoadd prrelooa
43、d claassees(tthe deffaullt ffilee iss devvicee/jaava/anddroiid/pprelloadded-claassees) d) LLoadd prrelooad ressourrcess e) CCalll Zyygotte:forrkSyysteemSeerveer (impplemmentted in devvicee/daalviik/vvm/IInteernaalNaativve.cc) tto fforkk a neww prroceess. Inn thhe nnew proocesss, calll tthe maiin ffu
44、ncctioon iin tthe JAVVA cclasss nnameed ccom.anddroiid.sservver.SysstemmSerrverr, wwhosse ssourrce is in devvicee/jaava/serrvicces/comm/anndrooid/serrverr. ii. Loaad llibaandrroidd_seerveers.so ii. CCalll JNNI nnatiive iniit1 funnctiion impplemmentted in devvicee/liibs/anddroiid_sservverss/coom_aand
45、rroidd_seerveer_SSysttemSServverss. IIt oonlyy caallss syysteem_iinitt immpleemenntedd inn deevicce/sservverss/syysteem/llibrraryy/syysteem_iinitt.cppp. IIf rrunnningg onn siimullatoor, insstanntiaate AuddioFFlinngerr, MMediiaPllayeerSeerviice andd CaamerraSeerviice herre. CCalll innit22 fuuncttionn
46、 inn JAAVA claass nammed comm.anndrooid.serrverr.SyysteemSeerveer, whoose souurcee iss inn deevicce/jjavaa/seerviicess/coom/aandrroidd/seerveer. Thiis ffuncctioon iis vveryy crritiicall foor AAndrroidd beecauuse it staart alll off Anndrooid JAVVA sservvicees. IIf nnot runnninng oon ssimuulattor, caa
47、ll IPCCThrreaddStaate:seelf()-joiinThhreaadPoool() tto eenteer iintoo seerviice disspattcheer. SysteemSeerveer:iniit2 willl sstarrt aa neew tthreead to staart alll JAAVA serrvicces as folllowws: Core Serrvicces: 1. Sttarttingg Poowerr Maanagger /2. Crreattingg Acctivvityy Maanagger 3. Sttarttingg Te
48、elepphonny RRegiistrry /4. Sttarttingg Paackaage Mannageer /5. Seet AActiivitty MManaagerr Seerviice as Sysstemm Prroceess 6. Sttarttingg Coonteext Mannageer 7. Sttarttingg Syysteem CConttextt Prroviiderrs 8. Sttarttingg Baatteery Serrvicce /9. Sttarttingg Allarmm Maanagger /10. Sttarttingg Seensoor
49、 SServvicee 11. Sttarttingg Wiindoow MManaagerr 12. Sttarttingg Blluettootth SServvicee /13. Sttarttingg Moountt Serrvicce /Otherr seerviicess /1. Sttarttingg Sttatuus BBar Serrvicce 2. Sttarttingg Haardwwaree Seerviice 3. Sttarttingg NeetSttat Serrvicce 4. Sttarttingg Coonneectiivitty SServvicee 5.
50、 Sttarttingg Nootifficaatioon MManaagerr 6. Sttarttingg DeevicceSttoraageMMoniitorr Seerviice 7. Sttarttingg Loocattionn Maanagger 8. Sttarttingg Seearcch SServvicee 9. Sttarttingg Cllipbboarrd SServvicee 10. Sttarttingg Chheckkin Serrvicce 11. Sttarttingg Waallppapeer SServvicee 12. Sttarttingg Auu
51、dioo Seerviice 13. Sttarttingg HeeadssetOObseerveer 14. Sttarttingg AddbSeettiingssObsservver Finallly SysstemmSerrverr:iinitt2 wwilll caall ActtiviityMManaagerrSerrvicce.ssysttemRReaddy tto llaunnch thee fiirstt acctivvityy byy seentiing Inttentt.CAATEGGORYY_HOOME inttentt. Theree iss annothher way
52、y too sttartt syysteem sservver, whhichh iss thhrouugh a pproggramm naamedd syysteem_sservver whoose souurcee iss deevicce/sservverss/syysteem/ssysttem_maiin.ccpp. Itt allso callls sysstemm_innit to staart sysstemm seerviicess. SSo ttherre iis aa quuesttionn: wwhy doees AAndrroidd haave twoo meethoo
53、ds to staart sysstemm seerviicess? MMy gguesss iis tthatt diirecctlyy sttartt syysteem_sservver mayy haave synnchrronoous proobleem wwithh zyygotte bbecaausee syysteem_sservver willl ccalll JNNI tto sstarrt SSysttemSServver:innit22, wwhille aat tthatt tiime zyggotee maay nnot staart JAVVA VVM yyet.
54、Soo Anndrooid usees aanottherr meethood. Aftter zynnotee iss innitiialiizedd, fforkk a neww prroceess to staart sysstemm seerviicess. Androoid 啟動過過程 1. Booot系系統(tǒng)初始始化, 具體過過程參見見(syysteemccoreeinnitIniit.cc)中的的maiin函數(shù)數(shù),這時時候,手手機(jī)或者者模擬器器出現(xiàn)的的畫面是是一個cconssolee,顯示示“ANNDROOID”mmsg。 2. 初始始化成功功后,就就開始mmounntinng系統(tǒng)
55、統(tǒng),具體體參見(sysstemmcooremouuntddMoounttd.cc) 中的maain函函數(shù)。 3接下來來運(yùn)行nndrooidRRunttimee,并開開始啟動動javva虛擬擬機(jī)daalviikvmm。 4. Jaava虛虛擬機(jī)啟啟動成功功后,開開始系統(tǒng)統(tǒng)初始化化。系統(tǒng)統(tǒng)初始的的第一步步是用JJNI方方式實現(xiàn)現(xiàn)的,對對應(yīng)jaava代代碼為(fraamewworkksbbaseeseerviicessjaavacommanndrooidserrverrSyysteemSeerveer.jjavaa) iinitt1(Nattivee)函數(shù)數(shù),對應(yīng)應(yīng)的JNNI CC+代代碼為(fra
56、amewworkksbbaseecoorejniiseerveerccom_anddroiid_sservver_SysstemmSerrverr.cppp),而而實現(xiàn)的的C+代碼為為 (frammewoorkssbaasecmddsssysttem_serrverrliibraary Syysteem_iinitt.cppp) 中中的syysteem_iinitt()函函數(shù)。 5. syysteem_iinitt調(diào)用SuurfaaceFFlinngerr,SurrfacceFllingger的的reaadyTToRuun()函數(shù)用用BoootAnnimaatioon來實實現(xiàn)開機(jī)機(jī)動畫,這這時
57、候手手機(jī)或者者模擬器器顯示是是一副背背景圖加加一個動動態(tài)的小小機(jī)器人人。 6. 系統(tǒng)統(tǒng)初始化化的第二二步,將將啟動SServverTThreead進(jìn)進(jìn)程,參參見SyysteemSeerveer.iinitt2()。SerrverrThrreadd將啟動動各種系系統(tǒng)服務(wù)務(wù),如PPoweer MManaagerr、Acttiviity Mannageer等等等,具體體參見SServverTThreead的的runn函數(shù),SServverTThreead同同在SyysteemSeerveer.jjavaa中。 7.這之后后的事,應(yīng)應(yīng)該就是是進(jìn)入系系統(tǒng)了。(這這部分沒沒有調(diào)查查過)。對Andrroid
58、d啟動過過程的進(jìn)進(jìn)一步研研究對于關(guān)注 HYPERLINK /news/listbylabel/label/Android AAndrroidd底層的的朋友來來說,其其具體的的啟動過過程應(yīng)該該是比較較吸引我我們的。但但是很多多啟動文文件什么么的,都都得addb ppushh到hoost上上來看,挺挺不方便便的,都都怪 HYPERLINK /news/listbylabel/label/Android Anndrooid自自帶的TToollboxx太簡略略了。所所以在深深入了解解 HYPERLINK /news/listbylabel/label/Android Anddroiid的啟啟動流程程之
59、前,我我們來把把Bussyboox安裝裝到 HYPERLINK /news/listbylabel/label/Android Anndrooid上上去,這這樣,就就有很多多工具供供我們使使用了。 首先去去bussyboox主頁頁 下載載最新版版本的源源代碼,然然后用aarm的的交叉編編譯器編編譯出bbusyyboxx的可執(zhí)執(zhí)行程序序,編譯譯的時候候需要注注意一些些設(shè)置選選項,例例如Buiild Opttionns Buiild BussyBoox aas aa sttatiic bbinaary (noo shhareed llibss) 這這個要選選上,因因上這樣樣子編譯譯出來的的buss
60、yBoox才是是可以獨(dú)獨(dú)立運(yùn)行行的。Doo yoou wwantt too buuildd BuusyBBox witth aa Crrosss Coompiilerr? (/HHOMEE/tooolcchaiins/gccc-4.0.22-gllibcc-2.3.55/arrm-99tdmmi-llinuux-ggnu/binn/arrm-99tdmmi-llinuux-ggnu 這是是交叉編編譯器的的路徑,要要根據(jù)具具體的情情況來設(shè)設(shè)置。Insstalllattionn Opptioons Donnt usee /uusr這樣子子編譯出出來的bbusyyboxx才不會會安裝到到你主機(jī)機(jī)的/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合同審批制度
- 2025企業(yè)財產(chǎn)抵押合同范本
- 委托珠寶維修合同范例
- 供苗木合同范例
- 咨詢費(fèi)合同范例 英文
- 苗木供應(yīng)安裝合同范例
- 公司外聘人員合同范例
- 水電物業(yè)合同范例
- 普通房子合同范例
- 租用拖車絞盤合同范例
- JJG 475-2008電子式萬能試驗機(jī)
- 反洗錢工作保密事項培訓(xùn)
- (2024年)反壟斷法及反不正當(dāng)競爭法課件
- 2024年江蘇南通國有資產(chǎn)投資控股有限公司招聘筆試參考題庫含答案解析
- 2023年6月國開(中央電大)行管本科《西方行政學(xué)說》期末考試試題及答案
- 預(yù)防宗教滲透從我做起
- 智能智能化智能眼鏡
- 語言習(xí)得理論與實踐應(yīng)用
- 江蘇省南京市雨花臺區(qū)2023-2024學(xué)年九年級上學(xué)期期末語文試題
- 軍隊物資工程服務(wù)采購產(chǎn)品分類目錄
- 《期末總復(fù)習(xí)》課件
評論
0/150
提交評論