Android的構建過程涉及到許多工具和流程,并會產生一系列中間件,最終生成一個APK文件,可以根據官方提供的流程圖來具體了解構建的過程。

通常的構建過程就是如上圖所示,下面是具體描述:
1.AAPT(Android?Asset?Packaging?Tool)工具會打包應用中的資源文件,如AndroidManifest.xml、layout布局中的xml等,并將xml文件編譯為二進制形式,當然assets文件夾中的文件不會被編譯,圖片及raw文件夾中的資源也會保持原來的形態,需要注意的是raw文件夾中的資源也會生成資源id。AAPT編譯完成之后會生成R.java文件。
2.AIDL工具會將所有的aidl接口轉化為java接口。
3.所有的java代碼,包括R.java與aidl文件都會被Java編譯器編譯成.class文件。
4.Dex工具會將上述產生的.class文件及第三庫及其他.class文件編譯成.dex文件(dex文件是Dalvik虛擬機可以執行的格式),dex文件最終會被打包進APK文件。
5.ApkBuilder工具會將編譯過的資源及未編譯過的資源(如圖片等)以及.dex文件打包成APK文件。
6.生成APK文件后,需要對其簽名才可安裝到設備,平時測試時會使用debug?keystore,當正式發布應用時必須使用release版的keystore對應用進行簽名。
7.如果對APK正式簽名,還需要使用zipalign工具對APK進行對齊操作,這樣做的好處是當應用運行時會減少內存的開銷。?
在構建APK的過程中,當APK過大,應用中的方法數量超過65536限制的時候,可能會報如下錯誤:Unable?to?execute?dex:?method?ID?not?in?[0,?0xffff]:?65536。一旦遇到上述錯誤,就需要使用MultiDex方案來解決,但官方的MultiDex方案有一些限制,因此還得使用各種策略填坑才行,具體可參考網上不少較優秀的解決方案。
參考文檔:https://developer.android.com/sdk/installing/studio-build.html#detailed-build
- 前言
- Android觸摸屏事件派發機制詳解與源碼分析一(View篇)
- Android觸摸屏事件派發機制詳解與源碼分析二(ViewGroup篇)
- Android觸摸屏事件派發機制詳解與源碼分析三(Activity篇)
- Android應用setContentView與LayoutInflater加載解析機制源碼分析
- Android應用Context詳解及源碼解析
- Android異步消息處理機制詳解及源碼分析
- Android應用Activity、Dialog、PopWindow、Toast窗口添加機制及源碼分析
- Android ListView工作原理完全解析,帶你從源碼的角度徹底理解
- Activity啟動過程全解析
- Android應用AsyncTask處理機制詳解及源碼分析
- 說說 PendingIntent 的內部機制
- Android Activity.startActivity流程簡介
- Activity界面顯示全解析
- 框架層理解Activity生命周期(APP啟動過程)
- APK安裝過程及原理詳解
- Android構建過程簡述
- Android應用層View繪制流程與源碼分析