在自定义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文件