Gradle學習筆記 - 編譯過程中部分task作用

在自定義gradle插件時,最頭疼的莫過於不知道將插件加入到執行流程中哪個地方,下面梳理了一些主要task的作用:

1、preDebugBuild
     獲取compile 和 runtime的依賴包並對其做一些版本號,依賴等的校驗工作。
2、compileDebugAidl
     將aidl轉換爲java文件
3、checkDebugManifest
     檢查menifest文件是否存在
4、generateDebugBuildConfig
     生成BuildConfig.java文件
5、generateDebugResValues
     處理用戶在app/build.gradle下定義的resValue,生成路勁:app/build/generated/res/resValues/debug/values/generated.xml

例如

buildTypes {
        debug { 
            //可以在xml中使用,或者調用getResources().getString(R.string.app_name)獲取app_name的值
            resValue "string", "app_name", "@string/app_name_debug"
            //會寫入生成BuildConfig.java中
		     buildConfigField "String","debugtestKey","\"debugtestValue\""       
		 }
}

buildConfigField 和resValue可以在buildTypes、defaultConfig、productFlavors中定義。

6、mergeDebugResources
     合併資源文件,主要包括:generateDebugResValues生成的generated.xml、依賴的以及工程中的資源
     依賴庫資源地址:gradle本地路徑/.gradle/caches/transforms-1/files-1.1/
     用途: 例如將圖片轉換爲webp格式的插件可以在此task前處理
7、processDebugManifest
     mege manifest文件
8、processDebugResources
     aapt處理資源文件,生成R.java等文件
9、javaPreCompileDebug
     java註解處理器收集,生成 annotationProcessors.json 文件,路勁目錄:app/build/intermediates/annotation_processor_list/
10、compileDebugJavaWithJavac
     將java文件編譯成class文件,如果有定義註解處理器則會執行相應邏輯
11、compileDebugNdk
     編譯 ndk
12、mergeDebugShaders
     合併 shader 文件
13、compileDebugShaders
     編譯 shaders
14、mergeDebugAssets
     合併 assets 文件
15、transformClassesWithDexBuilderForDebug
     將項目中的class以及依賴的jar包轉化爲一個一個dex文件(會有重複),生成目錄:app/build/intermediates/transforms/dexBuilder
16、transformDexArchiveWithExternalLibsDexMergerForDebug
     生成所有依賴的jar包的dex集合,對不同moudle中的jar包會去重
17、transformDexArchiveWithDexMergerForDebug
打包最終dex文件

參考文章:
Android gradle打包涉及task源碼解析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章