Apk 構(gòu)建過(guò)程
image.png
上面這張圖是我們平時(shí)用Android studio開(kāi)發(fā)安卓app點(diǎn)運(yùn)行后會(huì)在app-build-outputs-apk目錄下生成apk文件的構(gòu)建過(guò)程泪勒,下面具體分析一下
-
aapt(Android assent packaging tool)
aapt工具會(huì)打包應(yīng)用中的資源文件晋被,如清單文件和layout中的布局文件,并將其編譯成二進(jìn)制文件,當(dāng)然符衔,但是assent文件夾下的資源會(huì)保持不變,圖片和res/raw文件夾下的資源也不會(huì)被改變糟袁,但raw下的資源也會(huì)生成資源id判族,這步走完一會(huì)會(huì)生成R.java文件 -
aidl
aidl工具會(huì)將應(yīng)用中所有的aidl接口轉(zhuǎn)換成java接口 - 所有的Java代碼包括R.java文件和aidl文件都會(huì)被編譯成
.class文件
-
dex工具
會(huì)將上述步驟生成的.class文件和第三方庫(kù)的.class文件及其他.class文件轉(zhuǎn)換成Dalvik虛擬機(jī)支持的.dex文件并最終打包進(jìn)apk文件 -
apkbuilder工具
會(huì)將編譯過(guò)的資源和未編譯過(guò)的資源如圖片以及.dex文件打包成apk文件 - 生成APK文件后,需要對(duì)其
簽名
才可安裝到設(shè)備项戴,平時(shí)測(cè)試時(shí)會(huì)使用debug keystore形帮,當(dāng)正式發(fā)布應(yīng)用時(shí)必須使用release版的keystore對(duì)應(yīng)用進(jìn)行簽名。