我們Android開發(fā)人員在使用Android Studio的過程中,最常見的操作就是shift+f10把Android應(yīng)用裝到手機(jī)上進(jìn)行調(diào)試。那么,這個(gè)過程中到底發(fā)生了什么?主要可以分為兩個(gè)步驟:1.編譯Android工程 2.將編譯完成的apk安裝到手機(jī)上帚湘。
1.編譯
1.AAPT工具會(huì)打包應(yīng)用中的資源文件玫荣,如AndroidManifest.xml,layout布局中的xml等甚淡,并將xml文件編譯wei為二進(jìn)制形式。assets文件夾中的文件不會(huì)被編譯捅厂,圖片以及raw文件夾中的資源也會(huì)保持原來的形態(tài)贯卦,需要注意的是raw文件夾中的資源也會(huì)生成資源id。AAPT編譯完成之后會(huì)生成R.java文件
2.AIDL工具將所有的aidl接口轉(zhuǎn)化為java接口
3.所有的java代碼焙贷,包括R.java撵割,aidl文件,都會(huì)被jvm虛擬機(jī)編譯成.class文件
4.Dalvik虛擬機(jī)將生成的.class文件以及第三方的.class文件編譯成.dex文件辙芍。.dex文件相對(duì).class文件進(jìn)行了格式優(yōu)化啡彬。
5.apkBuilder將編譯過的資源以及未編譯過的資源以及.dex文件打包成.apk文件
6.使用jarsinger工具進(jìn)行簽名,平時(shí)調(diào)試時(shí)故硅,會(huì)使用debug keystore
7.如果使用正式簽名庶灿,還需要使用zipalign工具進(jìn)行對(duì)齊操作,這樣做的好處是當(dāng)應(yīng)用運(yùn)行時(shí)會(huì)減少內(nèi)存的開銷吃衅。
2.安裝
1.復(fù)制APK到/data/app目錄下往踢,解壓并掃描安裝包
2.資源管理器解析APK里的資源文件
3.解析AndroidManifest文件,并在/data/data目錄下創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)目錄
4.對(duì)dex文件進(jìn)行優(yōu)化徘层,并保存在dalvik-cache目錄下
5.將AndroidManifest文件解析出的四大組件信息注冊(cè)到PackageManagerService中
6.安裝完成后峻呕,發(fā)送廣播