平時(shí)開(kāi)發(fā)過(guò)程中我們通過(guò)android studio編寫(xiě)完成android項(xiàng)目之后直接點(diǎn)擊 Run 'app'就可以在build/outputs/apk生成可以在android設(shè)備中安裝的apk文件了征堪,那么整個(gè)android源碼的構(gòu)建過(guò)程是怎么樣的呢井厌?
我們可以根據(jù)Google官方提供的流程圖來(lái)具體了解構(gòu)建的過(guò)程:
通常的構(gòu)建過(guò)程就是如上圖所示搭幻,下面是具體描述:
1.AAPT(Android Asset Packaging Tool)工具會(huì)打包應(yīng)用中的資源文件郎笆,如AndroidManifest.xml扶供、layout布局中的xml等,并將xml文件編譯為二進(jìn)制形式肿嘲,當(dāng)然assets文件夾中的文件不會(huì)被編譯滑燃,圖片及raw文件夾中的資源也會(huì)保持原來(lái)的形態(tài),需要注意的是raw文件夾中的資源也會(huì)生成資源id疆液。AAPT編譯完成之后會(huì)生成R.java文件一铅。
2.AIDL工具會(huì)將所有的aidl接口轉(zhuǎn)化為java接口。
3.所有的java代碼堕油,包括R.java與aidl文件都會(huì)被Java編譯器編譯成.class文件潘飘。
4.Dex工具會(huì)將上述產(chǎn)生的.class文件及第三庫(kù)及其他.class文件編譯成.dex文件(dex文件是Dalvik虛擬機(jī)可以執(zhí)行的格式),dex文件最終會(huì)被打包進(jìn)APK文件掉缺。
5.ApkBuilder工具會(huì)將編譯過(guò)的資源及未編譯過(guò)的資源(如圖片等)以及.dex文件打包成APK文件卜录。
6.生成APK文件后,需要對(duì)其簽名才可安裝到設(shè)備眶明,平時(shí)測(cè)試時(shí)會(huì)使用debug keystore艰毒,當(dāng)正式發(fā)布應(yīng)用時(shí)必須使用release版的keystore對(duì)應(yīng)用進(jìn)行簽名。
7.如果對(duì)APK正式簽名搜囱,還需要使用zipalign工具對(duì)APK進(jìn)行對(duì)齊操作丑瞧,這樣做的好處是當(dāng)應(yīng)用運(yùn)行時(shí)會(huì)減少內(nèi)存的開(kāi)銷(xiāo)柑土。