廢話少說(shuō)序仙,先看張圖:
構(gòu)建過(guò)程:
- aapt工具(Android Asset Packaging Tool安卓資源打包工具)將應(yīng)用的所有資源文件裆甩,例如
AndroidManifest.xml
文件以及各種XML文件進(jìn)行編譯冗锁。生成編譯后的資源文件嗤栓,以及R.java文件冻河。這樣通過(guò)R.java文件就可以在java代碼中引用那些編譯后的資源文件了。
- aidl工具將所有.aidl文件轉(zhuǎn)化為java接口文件茉帅。
- 所有java源代碼叨叙,包括R.java和.aidl接口文件,由Java編譯器編譯為.class文件堪澎。
- dex工具將上面得到的.class文件以及項(xiàng)目中用的第三方庫(kù)和.class文件轉(zhuǎn)為.dex文件(可能不止一個(gè)擂错,
Multidex!
樱蛤,萬(wàn)惡的Unable to execute dex: method ID not in [0,0xffff]: 65536
)钮呀。 - 所有未編譯的資源(例如圖片)剑鞍、已編譯的資源、連同上面的.dex文件由apkbuilder打包為一個(gè).apk文件爽醋。
- 在安裝到一臺(tái)設(shè)備之前蚁署,構(gòu)建出的.apk文件應(yīng)該被簽名(debug或者release簽名)。
- 最后簽名發(fā)布應(yīng)用子房,須用zipalign工具對(duì)齊.apk文件形用,對(duì)齊可以減少應(yīng)用運(yùn)行時(shí)的內(nèi)存占用就轧。