




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android的开机流程1. 系统引导bootloader1) 源码:bootable/bootloader/*2) 说明:加电后后,CPPU将先先执行bboottloaaderr程序,此处有有三种选选择a) 开机按按Cammeraa+Poowerr启动到到fasstbooot,即命令令或SDD卡烧写写模式,不加载载内核及及文件系系统,此此处可以以进行工工厂模式式的烧写写b) 开机按按Homme+PPoweer启动动到reecovveryy模式,加载rrecooverry.iimg,reccoveery.imgg包含内内核,基基本的文文件系统统,用于于工程模模式的烧烧写c) 开机按按Powwe
2、r,正常启启动系统统,加载载booot.iimg,booot.iimg包包含内核核,基本本文件系系统,用用于正常常启动手手机(以以下只分分析正常常启动的的情况)2. 内内核keerneel1) 源码:kerrnell/*2) 说明:kerrnell由boootlloadder加加载3. 文文件系统统及应用用iniit1) 源码:sysstemm/coore/iniit/*2) 配置文文件:ssysttem/roootdiir/iinitt.rcc,3) 说明:iniit是一一个由内内核启动动的用户户级进程程,它按按照innit.rc中中的设置置执行:启动服服务(这这里的服服务指llinuux底
3、层层服务,如addbd提提供addb支持持,voold提提供SDD卡挂载载等),执行命命令和按按其中的的配置语语句执行行相应功功能4. 重重要的后后台程序序zyggotee1) 源码:fraamewworkks/bbasee/cmmds/appp_maain.cppp等2) 说明:zyggotee是一个个在innit.rc中中被指定定启动的的服务,该服务务对应的的命令是是/syysteem/bbin/appp_prroceessa) 建立JJavaa Ruuntiime,建立虚虚拟机b) 建立SSockket接接收AcctivvityyMannanggerSServvicee的请求求,用于于F
4、orrk应用用程序c) 启动SSysttem Serrverr5. 系系统服务务sysstemm seerveer1) 源码:fraamewworkks/bbasee/seerviicess/jaava/comm/anndrooid/serrverr/SyysteemSeerveer.jjavaa2) 说明:被zyygotte启动动,通过过Sysstemm Maanagger管管理anndrooid的的服务(这里的的服务指指fraamewworkks/bbasee/seerviicess下的服服务,如如卫星定定位服务务,剪切切板服务务等)6. 桌桌面laaunccherr1) 源码:Actti
5、viityMManaagerrSerrvicce.jjavaa为入口口,paackaagess/appps/lauunchher*实现2) 说明:系统启启动成功功后SyysteemSeerveer使用用xxxx.syysteemReeadyy()通通知各个个服务,系统已已经就绪绪,桌面面程序HHomee就是在在ActtiviityMManaagerrSerrvicce.ssysttemRReaddy()通知的的过程中中建立的的,最终终调用()启llaunncheer7. 解解锁1) 源码:fraamewworkks/ppoliiciees/bbasee/phhonee/coom/aandrro
6、idd/innterrnall/pooliccy/iimpll/*llockk*2) 说明:系统启启动成功功后SyysteemSeerveer调用用wm.sysstemmReaady()通知知WinndowwMannageerSeerviice,进而调调用PhhoneeWinndowwMannageer,最最终通过过LocckPaatteernKKeygguarrdViiew显显示解锁锁界面,跟踪代代码可以以看到解解锁界面面并不是是一个AActiivitty,这这是只是是向特定定层上绘绘图,其其代码了了存放在在特殊的的位置8. 开开机自启启动的第第三方应应用程序序1) 源码:fraamewwo
7、rkks/bbasee/seerviicess/jaava/comm/anndrooid/serrverr/amm/AcctivvityyMannageerSeerviice.javva2) 说明:系统启启动成功功后SyysteemSeerveer调用用ActtiviityMManaagerrNattivee.geetDeefauult().ssysttemRReaddy()通知AActiivittyMaanagger启启动成功功,AcctivvityyMannageer会通通过置变变量mBBoottingg,通知知它的另另一线程程,该线线程会发发送广播播anddroiid.iinteent.
8、acttionn.BOOOT_COMMPLEETEDD以告知知已注册册的第三三方程序序在开机机时自动动启动。9. 总总结综上上所述,系统层层次关于于启动最最核心的的部分是是zyggotee(即aapp_proocesss)和和sysstemm seerveer,zzygoote它它负责最最基本的的虚拟机机的建立立,以支支持各个个应用程程序的启启动,而而sysstemm seerveer用于于管理aandrroidd后台服服务,启启动步骤骤及顺序序。10.参参考 HYPERLINK /basonjiang_sz/category/648399.aspx httpp:/bloog.ccsdnn.n
9、eet/bbasoonjiiangg_szz/caateggoryy/64483999.aaspxxAndrroidd 启动动过程详详解Andrroidd从Liinuxx系统启启动有44个步骤骤;(1) iniit进程程启动(2) Nattivee服务启启动(3) Sysstemm Seerveer,AAndrroidd服务启启动(4) Homme启动动总体启动动框架图图如:第一步:iniitiaal进程程(syysteem/ccoree/innit) innit进进程,它它是一个个由内核核启动的的用户级级进程。内核自自行启动动(已经经被载入入内存,开始运运行,并并已初始始化所有有的设备备驱动
10、程程序和数数据结构构等)之之后,就就通过启启动一个个用户级级程序iinitt的方式式,完成成引导进进程。iinitt始终是是第一个个进程.Initt.rccInitt.maarveell.rcInitt进程一一起来就就根据iinitt.rcc和innit.xxxx.rcc脚本文文件建立立了几个个基本的的服务:serrviccemaanammgerr zyggotee 。最后Innit并并不退出出,而是是担当起起prooperrty serrvicce的功功能。1.1脚脚本文件件inittSyysteem/CCoree/InnitInitt.c: paarsee_coonfiig_ffilee(
11、Innit.rc) parrse_connfigg_fiile(Iniit.mmarvvel.rc)解析脚本本文件:Iniit.rrc和IInitt.xxxxx.rc(硬件平平台相关关)Initt.rcc是Anndrooid自自己规定定的初始始化脚本本(Anndrooid Iniit LLangguagge, Sysstemm/Coore/Iniit/rreaddme.txtt)该脚本包包含四个个类型的的声明:Actiionss Commmandds Servvicees Optiionss. 1.2 服务启启动机制制我们来看看看Innit是是这样解解析.rrc文件件开启服服务的。(1)打打开
12、.rrc文件件,解析析文件内内容 sysstemm/coore/iniit/iinitt.c将serrvicce信息息放置到到serrvicce_llistt中。 syysteem/ccoree/innit parrserr.c(2)rresttartt_seerviice() sysstemm/coore/iniit/iinitt.c serrvicce_sstarrt exeecvee().建立立serrvicce进程程。第二步 Zyggotee Serrviccemaanagger和和zyggotee进程就就奠定了了Anddroiid的基基础。ZZygoote这这个进程程起来才才会建立立
13、起真正正的Anndrooid运运行空间间,初始始化建立立的Seerviice都都是Naavtiive serrvicce.在在.rcc脚本文文件中zzygoote的的描述:servvicee zyygotte /sysstemm/biin/aapp_proocesss -Xzyygotte /sysstemm/biin -zyygotte -sttartt-syysteem-sservver所以Zyygotte从mmainn()frrameeworrks/basse/ccmdss/appp_mmainn.cppp开始始。(1) maiin()fframmewoorkss/baase/cmdds
14、/aapp_maiin.ccpp建立Jaava Runntimme runttimee.sttartt(ccom.anddroiid.iinteernaal.oos.ZZygooteIInitt, staartSSysttemSServver); (2) runntimme.sstarrtAAndrroiddRunntimme.ccpp建立虚拟拟机 运行:ccom.anddroiid.iinteernaal.oos.ZZygooteIInitt:maain函函数。 (3)mmainn()ternnal.os.ZyggoteeIniit/正真的的Zyggotee。regiisteerZyygot
15、teSoockeet();/登记LListten端端口 starrtSyysteemSeerveer(); 进入Zyygotte服务务框架。 经过这几几个步骤骤,Zyygotte就建建立好了了,利用用Socckett通讯,接收AActiivittyMaananngerrSerrvicce的请请求,FForkk应用程程序。第三步 Sysstemm Seerveer HYPERLINK mailto:startSystemServerernal.os.ZygoteInit在Zygote starrtSyysteemSeerveerccom.anddroiid.iinteernaal.oos.ZZy
16、gooteIInitt在Zyygotte上fforkk了一个个进程:coom.aandrroidd.seerveer.SSysttemSServver.于是SSysttemSServver(SyysteemSeerveer.jjavaa)就建建立了。Anddroiid的所所有服务务循环框框架都是是建立SSysttemSServver(SyysteemSeerveer.jjavaa)上。在SyysteemSeerveer.jjavaa中看不不到循环环结构,只是可可以看到到建立了了iniit2的的实现函函数,建建立了一一大堆服服务,并并AdddSerrvicce到sservvicee Maanag
17、ger。mainn() ccom/anddroiid/sservver/SysstemmSerrverr iniit1();Initt1()是在NNatiive空空间实现现的(ccom_anddoirrd_sservver_sysstemmSerrverr.cppp)。我们一一看这个个函数就就知道了了,innit11-ssysttem_iniit() SSysttem_iniit.ccpp在sysstemm_innit()我们们看到了了循环闭闭合管理理框架。 Calll comm/anndrooid/serrverr/SyysteemSeerveer, iinitt2 . ProocesssS
18、ttatee:sselff()-sttarttThrreaddPoool(); IPPCThhreaadSttatee:sselff()-jooinTThreeadPPooll();initt2()SyysteemSeerveer.jjavaa中建立立了Anndrooid中中所有要要用到的的服务。这个innit22()建建立了一一个线程程,来NNew Serrvicce和AAddSServvicee来建立立服务第三步 Homme启动动 HYPERLINK mailto:在ServerThreadSystemServer.java 在SerrverrThrreaddSyysteemSeervee
19、r.jjavaa后半段段,我们们可以看看到系统统在启动动完所有有的Anndrooid服服务后,做了这这样一些些动作:(1) 使用xxxx.sysstemmReaady()通知知各个服服务,系系统已经经就绪。(2) 特别别对于AActiivittyMaanaggerSServvicee.syysteemReeadyy(回调调) Widdgett.waallppapeer,iimm(输入法法)等rreaddy通知知。Homee就是在在ActtiviityMManaagerrSerrvicce.ssysttemRReaddy()通知的的过程中中建立的的。下面面是AcctivvityyMannagee
20、rSeerviice.sysstemmReaady()的伪伪代码:systtemRReaddy()AcctivvityyMannageerSeerviice.javva ressumeeToppActtiviityLLockked() staartHHomeeActtiviityLLockked();/如果果是第一一个则启启动HoomeAActiivitty。 staartAActiivittyLoockeed(。)CATTEGOORY_HOMMEAndrroidd Boootiing:initt iss thhe ffirsst pproccesss affterr keerneel sst
21、arrtedd. TThe corrressponndinng ssourrce codde lliess inn: ddeviice/sysstemm/innit. Itt dooes thee foolloowinng ttaskks sstepp byy sttep: 1.Innitiialiize logg syysteem. 2.Paarsee /iinitt.rcc annd /iniit.%harrdwaare%.rcc. 3. EExeccutee eaarlyy-innit acttionn inn thhe ttwo filles parrsedd inn sttep 2.
22、 4. DDeviice speeciffic iniitiaalizze. Forr exxampple, maake alll deevicce nnodee inn /ddev andddowwnlooad firrmwaaress. 5. IInittiallizee prropeertyy syysteem. Acttuallly thee prropeertyy syysteem iis wworkkingg ass a shaare memmoryy. LLogiicallly it loooks likke aa reegisstryy unnderr Wiindoows sy
23、sstemm. 6. EExeccutee innit acttionn inn thhe ttwo filles parrsedd inn sttep 2. 7. SStarrt pproppertty sservvicee. 8. EExeccutee eaarlyy-booot andd booot acttionns iin tthe twoo fiiless paarseed iin sstepp 2. 9. EExeccutee prropeertyy acctioon iin tthe twoo fiiless paarseed iin sstepp 2. 10.Entter i
24、ntto aan iindeefinnitee looop to waiit ffor devvicee/prropeertyy seet/cchilld pproccesss exxit eveentss. FFor exaamplle, if an SD carrd iis ppluggineed, iniit wwilll reeceiive a ddeviice addd evventt, sso iit ccan makke nnodee foor tthe devvicee. MMostt off thhe iimpoortaant proocesss iis fforkked i
25、n iniit, so if anyy off thhem craasheed, iniit wwilll reeceiive a SSIGCCHLDD thhen traansllatee itt innto a cchilld pproccesss exxit eveent, soo inn thhe lloopp innit cann haandlle tthe proocesss eexitt evventt annd eexeccutee thhe ccommmandds ddefiinedd inn *.rc(it willl rrun commmannd oonreestaart
26、). The .rcc fiile is a sscriipt fille ddefiinedd byy Anndrooid. Thhe ddefaaultt iss deevicce/ssysttem/roootdiir/iinitt.rcc. WWe ccan takke aa looot at thee fiile forrmatt(deevicce/ssysttem/iniit/rreaddme.txtt iss a goood ooverralll inntrooducctioon oof tthe scrriptt). Bassicaallyy thhe sscriipt fill
27、e cconttainns aactiionss annd sservvicees. Actiionss Actiionss arre nnameed ssequuencces of commmannds. Acctioons havve aa trriggger whiich is useed tto ddeteermiine wheen tthe acttionn shhoulld ooccuur. Whhen an eveent occcurss whhichh maatchhes an acttionns triiggeer, thaat aactiion is addded to t
28、hee taail of a tto-bbe-eexeccuteed qqueuue (unllesss itt iss allreaady on thee quueuee). Eachh acctioon iin tthe queeue is deqqueuued in seqquennce andd eaach commmannd iin tthatt acctioon iis eexeccuteed iin ssequuencce. Innit hanndlees ootheer aactiivittiess (ddeviice creeatiion/desstruuctiion, pr
29、ropeertyy seettiing, prroceess resstarrtinng) beetweeen thhe eexeccutiion of thee coommaandss inn acctivvitiies. Actiionss taake thee foorm of: on . Servvicees Servvicees aare proograams whiich iniit llaunnchees aand (opptioonallly) reestaartss whhen theey eexitt. Serrvicces takke tthe forrm oof: se
30、rvvicee * . Optiionss Optiionss arre mmodiifieers to serrvicces. TTheyy afffecct hhow andd whhen iniit rrunss thhe sservvicee. Trigggerrs Trigggerrs aare strringgs wwhicch ccan be useed tto mmatcch ccerttainn kiindss off evventts aand useed tto ccausse aan aactiion to occcur. The buiiltiin ssuppport
31、ted commmannds aree deefinned in devvicee/syysteem/iinitt/keeywoordss.h. Coommaandss arre iimpllemeentdd inn deevicce/ssysttem/iniit/bbulttinss.c. The iniit pproggramm onnly exeecuttes fivve kkindds oof ttrigggerrs: “eaarlyy-innit”, “iniit”, “eearlly-bboott”, “booot”, “prooperrty:*”. Taake a llookk
32、att thhe ffolllowiing linne iin ddefaaultt innit.rc. classs_sstarrt ddefaaultt Thiss liine is a ccommmandd foor tthe acttionn coorreespoondiing to “booot” trriggger. Itt wiill staart alll seerviicess whhosee cllasss naame equualss too “ddefaaultt”. By deffaullt, if no claass opttionn iss deefinned f
33、orr 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 rrun as a fforkked pr
34、oocesss oof iinitt, ttakee a loook aat tthe souurcee coode of serrvicce_sstarrt iin ddeviice/sysstemm/innit.c. So aaccoordiing to thee deefauult iniit.rrc, thee foolloowinng sservvicees wwilll bee exxecuutedd sttep by steep: conssolee: sstarr a sheell. Thhe ssourrce is in devvicee/syysteem/bbin/ashh
35、. adbdd: sstarrt aadb daeemonn. TThe souurcee iss inn deevicce/ttoolls/aadbdd. BBy ddefaaultt iss diisabbledd. servviceemannageer: staart binnderr syysteem. Thee soourcce iis iin ddeviice/commmannds/binnderr. mounntd: moountt alll ffs ddefiinedd inn /ssysttem/etcc/moounttd.cconff iff sttartted, reec
36、eiive commmannds thrrouggh llocaal ssockket to mouunt anyy fss. TThe souurcee iss inn deevicce/ssysttem/binn/moounttd. debuuggeerd: sttartt deebugg syysteem. Thee soourcce iis iin ddeviice/sysstemm/biin/ddebuuggeerd. rildd: sstarrt rradiio iinteerfaace layyer daeemonn. TThe souurcee iss inn deevicce
37、/ccommmandds/rrindd. zygoote: sttartt Anndrooid Javva RRunttimee annd sstarrt ssysttem serrverr. IItss thhe mmostt immporrtannt sservvicee. TThe souurcee iss inn deevicce/sservverss/appp. mediia: staart AuddioFFlinngerr, MMediiaPllayeerSeerviice andd CaamerraSeerviice. Thhe ssourrce is in devvicee/c
38、oommaandss/meediaaserrverr. boottsouund: pllay thee deefauult booot ssounnd /sysstemm/meediaa/auudioo/uii/booot.mp33. TThe souurcee iss inn deevicce/ccommmandds/pplayymp33. dbuss: sstarrt ddbuss daaemoon, its oonlyy ussed by BluueZ. Thhe ssourrce is in devvicee/syysteem/BBlueetoooth/dbuus-ddaemmon.
39、hcidd: rrediirecct hhcidds stddoutt annd sstdeerr to thee Anndrooid loggginng ssysttem. Thhe ssourrce is in devvicee/syysteem/bbin/loggwraappeer. By deffaullt iis ddisaableed. hfagg: sstarrt BBlueetoooth hanndsffreee auudioo gaatewway, itts onlly uusedd byy BllueZZ. TThe souurcee iss inn deevicce/ss
40、ysttem/Bluuetooothh/blluezz-uttilss. BBy ddefaaultt iss diisabbledd. hsagg: sstarrt BBlueetoooth heaadseet aaudiio ggateewayy, iitss onnly useed bby BBlueeZ. Thee soourcce iis iin ddeviice/sysstemm/Blluettootth/bblueez-uutills. By deffaullt iis ddisaableed. insttallld: staart insstalll ppackkagee da
41、aemoon. Thee soourcce iis iin ddeviice/serrverrs/iinsttallld. flassh_rrecooverry: loaad /sysstemm/reecovveryy.immg. Thee soourcce iis iin ddeviice/commmannds/reccoveery/mtddutiils. Zygoote serrvicce ddoess thhe ffolllowiing tassks steep bby sstepp: 1. CCreaate JAVVA VVM. 2. RRegiisteer aandrroidd na
42、ativve ffuncctioon ffor JAVVA VVM. 3. CCalll thhe mmainn fuuncttionn inn thhe JJAVAA cllasss naamedd coom.aandrroidd.innterrnall.oss.ZyygotteInnit whoose souurcee iss deevicce/jjavaa/anndrooid/comm/anndrooid/intternnal/os/ZyggoteeIniit.jjavaa. a) Loaad ZZygooteIInitt cllasss b) Reggistter zyggotee s
43、oockeet c)Loaad pprelloadd cllassses(thee deefauult fille iisdeevicce/jjavaa/anndrooid/preeloaadedd-cllassses) d) Loaad pprelloadd reesouurcees e) Calll ZZygoote:foorkSSysttemSServver (immpleemenntedd inn deevicce/ddalvvik/vm/IntternnalNNatiive.c) to forrk aa neew pproccesss. IIn tthe neww prroceess
44、, caall thee maain funnctiion in thee JAAVA claass nammed comm.anndrooid.serrverr.SyysteemSeerveer, whoose souurcee iss inn deevicce/jjavaa/seerviicess/coom/aandrroidd/seerveer. i. Looad libbanddroiid_sservverss.soo iii. Calll JJNI nattivee innit11 fuuncttionn immpleemenntedd inn deevicce/llibss/ann
45、drooid_serrverrs/ccom_anddroiid_sservver_SysstemmSerrverrs. It onlly ccallls ssysttem_iniit iimpllemeenteed iin ddeviice/serrverrs/ssysttem/libbrarry/ssysttem_iniit.ccpp. If runnninng oon ssimuulattor, innstaantiiatee AuudiooFliingeer, MeddiaPPlayyerSServvicee annd CCameeraSServvicee heere. Calll ii
46、nitt2 ffuncctioon iin JJAVAA cllasss naamedd coom.aandrroidd.seerveer.SSysttemSServver, whhosee soourcce iis iin ddeviice/javva/sservvicees/ccom/anddroiid/sservver. Thhis funnctiion is verry ccritticaal ffor Anddroiid bbecaausee itt sttartt alll oof AAndrroidd JAAVA serrvicces. If nott ruunniing on
47、simmulaatorr, ccalll IPPCThhreaadSttatee:sselff()-jooinTThreeadPPooll() to entter intto sservvicee diispaatchher. SysttemSServver:innit22 wiill staart a nnew thrreadd too sttartt alll JJAVAA seerviicess ass foolloows: Coree Seerviicess: 1. SStarrtinng PPoweer MManaagerr /2. CCreaatinng AActiivitty M
48、Manaagerr 3. SStarrtinng TTeleephoony Reggisttry /4. SStarrtinng PPackkagee Maanagger /5. SSet Acttiviity Mannageer SServvicee ass Syysteem PProccesss 6. SStarrtinng CConttextt Maanagger 7. SStarrtinng SSysttem Conntexxt PProvvideers 8. SStarrtinng BBattteryy Seerviice /9. SStarrtinng AAlarrm MManaa
49、gerr /10. SStarrtinng SSenssor Serrvicce 11. SStarrtinng WWinddow Mannageer 12. SStarrtinng BBlueetoooth Serrvicce /13. SStarrtinng MMounntSeerviice/Otheer sservvicees /1. SStarrtinng SStattus Barr Seerviice 2. SStarrtinng HHarddwarre SServvicee 3. SStarrtinng NNetSStatt Seerviice 4. SStarrtinng CCo
50、nnnecttiviity Serrvicce 5. SStarrtinng NNotiificcatiion Mannageer 6. SStarrtinng DDeviiceSStorrageeMonnitoor SServvicee 7. SStarrtinng LLocaatioon MManaagerr 8. SStarrtinng SSearrch Serrvicce 9. SStarrtinng CClippboaard Serrvicce 10. SStarrtinng CChecckinn Seerviice 11. SStarrtinng WWalllpapper Serr
51、vicce 12. SStarrtinng AAudiio SServvicee 13. SStarrtinng HHeaddsettObsservver14. SStarrtinng AAdbSSetttinggsObbserrverr Finaallyy SyysteemSeerveer:iniit2 willl ccalll AcctivvityyMannageerSeerviice.sysstemmReaady to lauunchh thhe ffirsst aactiivitty bby ssenttingg Inntennt.CCATEEGORRY_HHOMEE inntennt
52、. Therre iis aanottherr waay tto sstarrt ssysttem serrverr, wwhicch iis tthrooughh a proograam nnameed ssysttem_serrverr whhosee soourcce iis ddeviice/serrverrs/ssysttem/sysstemm_maain.cppp. IIt aalsoo caallss syysteem_iinitt too sttartt syysteem sservvicees. So theere is a qquesstioon: whyy dooes A
53、nddroiid hhavee twwo mmethhodss too sttartt syysteem sservvicees? My gueess is thaat ddireectlly sstarrt ssysttem_serrverr maay hhavee syynchhronnouss prrobllem witth zzygoote beccausse ssysttem_serrverr wiill calll JJNI to staart SysstemmSerrverr:iinitt2, whiile at thaat ttimee zyygotte mmay nott s
54、ttartt JAAVA VM yett. SSo AAndrroidd usses anootheer mmethhod. Affterr zyynotte iis iinittiallizeed, forrk aa neew pproccesss too sttartt syysteem sservvicees. Andrroidd 启动动过程 1. BBoott系统初初始化,具体过过程参见见(syysteemccoreeinnitIniit.cc)中的的maiin函数数,这时时候,手手机或者者模拟器器出现的的画面是是一个cconssolee,显示示“ANNDROOID”msgg。 2.
55、初初始化成成功后,就开始始mouuntiing系系统,具具体参见见(syysteemccoreemoounttdMMounntd.c) 中的的maiin函数数。 3接下下来运行行ndrroiddRunntimme,并并开始启启动jaava虚虚拟机ddalvvikvvm。 4. JJavaa虚拟机机启动成成功后,开始系系统初始始化。系系统初始始的第一一步是用用JNII方式实实现的,对应jjavaa代码为为(frrameeworrksbassesservviceesjjavaacoomaandrroiddseerveerSSysttemSServver.javva) iniit1(Nattivee
56、)函数数,对应应的JNNI CC+代代码为(fraamewworkksbbaseecoorejniiseerveerccom_anddroiid_sservver_SysstemmSerrverr.cppp),而实现现的C+代码码为(fraamewworkksbbaseecmmdssysstemm_seerveerllibrraryy SSysttem_iniit.ccpp) 中的syysteem_iinitt()函函数。 5. ssysttem_iniit调用用SurrfacceFllingger,SurrfacceFllingger的的reaadyTToRuun()函数用用BoootAnn
57、imaatioon来实实现开机机动画,这时候候手机或或者模拟拟器显示示是一副副背景图图加一个个动态的的小机器器人。 6. 系系统初始始化的第第二步,将启动动SerrverrThrreadd进程,参见SSysttemSServver.iniit2()。SerrverrThrreadd将启动动各种系系统服务务,如PPoweer MManaagerr、Acttiviity Mannageer等等等,具体体参见SServverTThreead的的runn函数,SerrverrThrreadd同在SyysteemSeerveer.jjavaa中。 7.这之之后的事事,应该该就是进进入系统统了。(这部分分
58、没有调调查过)。对Anddroiid启动动过程的的进一步步研究对于关注注 HYPERLINK /news/listbylabel/label/Android Anddroiid底层层的朋友友来说,其具体体的启动动过程应应该是比比较吸引引我们的的。但是是很多启启动文件件什么的的,都得得adbb puush到到hosst上来来看,挺挺不方便便的,都都怪 HYPERLINK /news/listbylabel/label/Android Anndrooid自自带的TToollboxx太简略略了。所所以在深深入了解解 HYPERLINK /news/listbylabel/label/Android
59、Anddroiid的启启动流程程之前,我们来来把Buusybbox安安装到 HYPERLINK /news/listbylabel/label/Android AAndrroidd上去,这样,就有很很多工具具供我们们使用了了。 首先先去buusybbox主主页 下下载最新新版本的的源代码码,然后后用arrm的交交叉编译译器编译译出buusybbox的的可执行行程序,编译的的时候需需要注意意一些设设置选项项,例如如Buuildd Opptioons Buuildd BuusyBBox as a sstattic binnaryy (nno ssharred libbs) 这个要要选上,因上这这样
60、子编编译出来来的buusyBBox才才是可以以独立运运行的。Do youu waant to buiild BussyBoox wwithh a Crooss Commpiller? (/HOMME/ttoollchaainss/gccc-44.0.2-gglibbc-22.3.5/aarm-9tddmi-linnux-gnuu/biin/aarm-9tddmi-linnux-gnuu 这是是交叉编编译器的的路径,要根据据具体的的情况来来设置。Innstaallaatioon OOptiionss Doontt usse /usrr这样样子编译译出来的的bussyboox才不不会安装装到你主主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版建筑消防工程施工合同文本库
- 二零二五年度太阳能光伏系统安装调试合同
- 2025版餐饮业废弃物处理与资源化利用合同
- 二零二五年度文化创意产业保密竞业限制合同
- 二零二五年度餐饮废弃物处理与废弃物处理设施运营合同
- 二零二五年度PVC电力电缆护套材料采购合同书
- 二零二五年度国六排放标准柴油发电机设备销售合同
- 2025版自驾游包车服务及安全保障合同
- 二零二五版大型制造企业厂区环境维护与管理合同
- 2025版3款智能电网设备采购合同
- 2025数学步步高大一轮复习讲义人教A版复习讲义含答案
- 高中英语单词构词法(完整版)
- PLM模块业务流程图
- 数字货币概论 课件 第5章 稳定币的原理与实现
- 专题02《物态变化》压轴培优题型训练【十三大题型】(原卷版)
- 大学生科研训练与论文写作全套教学课件
- 短剧制作美学-叙事技巧与镜头语言
- 高处作业吊篮安全施工吊篮施工验收标准
- 粤23G-T012 弹卡式连接预应力混凝土实心方桩
- 湖南土建中级职称考试(专业基础知识复习要点)
- 芝麻香油行业分析
评论
0/150
提交评论