文章目录
Task5 checkDebugManifest
1. input/ouput
taskName:checkDebugManifest
=========================================================
output:/Users/apple/work/project/AndroidGradleTaskDemo/app/build/intermediates/check-manifest/debug
2. 核心类(CheckManifest)
@TaskAction
void check() {
if (!isOptional && manifest != null && !manifest.isFile()) {
throw new IllegalArgumentException(
String.format(
"Main Manifest missing for variant %1$s. Expected path: %2$s",
getVariantName(), getManifest().getAbsolutePath()));
}
}
该任务是校验操作,就是校验清单文件的合法性,不合法则中断任务,抛出异常
配置阶段操作
@Override
public void execute(@NonNull CheckManifest checkManifestTask) {
//1. 设置任务实现类
scope.getTaskContainer().setCheckManifestTask(checkManifestTask);
//2. 设置相关入参
checkManifestTask.setVariantName(
scope.getVariantData().getVariantConfiguration().getFullName());
checkManifestTask.setOptional(isManifestOptional);
checkManifestTask.manifest =
scope.getVariantData().getVariantConfiguration().getMainManifest();
//3. 出参目录配置
checkManifestTask.fakeOutputDir =
new File(
scope.getGlobalScope().getIntermediatesDir(),
"check-manifest/" + scope.getVariantConfiguration().getDirName());
}
依赖任务:preBuildTask
Task6 generateDebugBuildConfig
BuildConfig.java想必大家非常熟悉,该任务就是生成它
1. input/output
taskName:generateDebugBuildConfig
=========================================================
output:/Users/apple/work/project/AndroidGradleTaskDemo/app/build/generated/source/buildConfig/debug
========================END==============================
2. 核心类(GenerateBuildConfig)
@TaskAction
void generate() throws IOException {
//1. 清理操作
// must clear the folder in case the packagename changed, otherwise,
// there'll be two classes.
File destinationDir = getSourceOutputDir();
FileUtils.cleanOutputDir(destinationDir);
//2. 构建一个BuildConfig生成器,用于生成BuildConfig.java
BuildConfigGenerator generator = new BuildConfigGenerator(
getSourceOutputDir(),
getBuildConfigPackageName());
// Hack (see IDEA-100046): We want to avoid reportin