官方圖java
網絡流傳的比較全的圖,部分細節可能有差別android
Android APK 的編譯流程咱們能夠劃分爲2個部分:
1.是資源的編譯
2.是代碼的編譯網絡
其中so庫是經過NDK編譯生成.so文件後直接打進apk的中工具
資源編譯部分,首先apk資源包含哪些內容呢
1.工程中res目錄下的全部文件
2.assets目錄下的文件
3.andoird清單文件 AndroidManifest.xml
這些資源都是經過aapt工具編譯的,最終變編譯成一個資源包ui
代碼編譯部分包含
1.java源碼文件
2.已編譯好的java 類庫及jar包
3.已編譯好的帶android資源的類庫 即 aar包
4.R類3d
R類是由資源資源編譯時aapt生成的cdn
其中java源文件須要先經過 javac工具編譯成 class文件,
而後class文件和全部的jar包、包括aar包中的class文件 經過dx和d8編譯器被編譯成de文件xml
編譯好的aar文件最後經過zip命令被加入到第一步經過aapt編譯生成的資源壓縮包中blog
最後,詳細的資源編譯和代碼編譯的內容能夠參考後續相關的文章ip