
大神
上面這張圖是我們平時用Android studio開發(fā)安卓app點運行后會在app-build-outputs-apk目錄下生成apk文件的構(gòu)建過程,下面具體分析一下
1.aapt(Android assent packaging tool) aapt工具會打包應(yīng)用中的資源文件,如清單文件和layout中的布局文件,并將其編譯成二進(jìn)制文件,當(dāng)然,但是assent文件夾下的資源會保持不變,圖片和res/raw文件夾下的資源也不會被改變,但raw下的資源也會生成資源id,這步走完一會會生成R.java文件
2.aidl aidl工具會將應(yīng)用中所有的aidl接口轉(zhuǎn)換成java接口
3.所有的Java代碼包括R.java文件和aidl文件都會被編譯成.class文件
4.dex工具會將上述步驟生成的.class文件和第三方庫的.class文件及其他.class文件轉(zhuǎn)換成Dalvik虛擬機(jī)支持的.dex文件并最終打包進(jìn)apk文件
5.apkbuilder工具會將編譯過的資源和未編譯過的資源如圖片以及.dex文件打包成apk文件
6.生成APK文件后,需要對其簽名才可安裝到設(shè)備,平時測試時會使用debug keystore,當(dāng)正式發(fā)布應(yīng)用時必須使用release版的keystore對應(yīng)用進(jìn)行簽名。
7.如果對APK正式簽名,還需要使用zipalign工具對APK進(jìn)行對齊操作,這樣做的好處是當(dāng)應(yīng)用運行時會提高速度,但是相應(yīng)的會增加內(nèi)存的開銷