Gradle構建過程學習
學習gradle編譯構建過程,本意是想看看平時執行的gradle assembleDebug指令到底是怎么從無到有構造出來app的,通過閱讀一位jianshu上大佬寫的關於gradle編譯過程的文章,發現這個真的還是挺復雜的,gradle和ant等工具一樣,屬於一個編譯過程的框架,基於這個框架是可以做很多事情的,例如現在gradle的兩大概念,task和transform(兩者關系:addTransform 方法在執行過程中,會將 Transform 包裝成一個 AndroidTask 對象,所以transfrom最終會被轉換成一個task)。
出處:(https://en.proft.me/2017/10/15/enable-multidex-android-application/)
首先根據圖里面可以看出來gradle的大致構建過程,至上而下的看,左邊是app資源的打包提取,分別是生成對應的R文件以及壓縮資源到包里,中間是app的代碼,右邊是aidl的翻譯,還有一種是反射注解生成的java文件,這時就把這幾個java的文件通過java compiler去生成class文件,然后將自身的class以及三方庫的class都打包到dex文件中,這時候dex以及資源文件,和其他文件都打包壓縮到apk中,這時再經過對apk文件的加密最終就能得到目標文件了。
接下來就是源碼分析,具體的就是jianshu 作者的分析了,鏈接:https://www.jianshu.com/p/56197562ad47