$ ./gradlew help --task processDebugResources > Task :help Detailed task information for processDebugResources Path :app:processDebugResources Type LinkApplicationAndroidResourcesTask (com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask) Description - Group -
//... val resOutBaseNameFile = getOutputBaseNameFile(variantOutput, parameters.resPackageOutputDirectory.get().asFile )//link过程中的输出文件路径build/intermediates/processed_res/debug/out/resources-debug.ap_ val manifestFile = manifestOutput.outputFile //... try {
// If the new resources flag is enabled and if we are dealing with a library process // resources through the new parsers run { //构建configBuilder val configBuilder = AaptPackageConfig.Builder() .setManifestFile(File(manifestFile))//合并后的AndroidManifest的文件路径 .setOptions(parameters.aaptOptions.get()) .setCustomPackageForR(packageForR) .setSymbolOutputDir(symbolOutputDir) .setSourceOutputDir(srcOut) .setResourceOutputApk(resOutBaseNameFile)//设置link过程的输出文件路径 .setProguardOutputFile(proguardOutputFile) .setMainDexListProguardOutputFile(mainDexListProguardOutputFile) .setVariantType(parameters.variantType.get()) .setResourceConfigs(parameters.resourceConfigs.get()) .setPreferredDensity(preferredDensity) .setPackageId(parameters.packageId.orNull) .setAllowReservedPackageId( parameters.packageId.isPresent && parameters.packageId.get() < FeatureSetMetadata.BASE_ID ) .setDependentFeatures(featurePackagesBuilder.build()) .setImports(parameters.imports.files) .setIntermediateDir(parameters.incrementalDirectory.get().asFile) .setAndroidJarPath(parameters.androidJarInput.get() .getAndroidJar() .get().absolutePath)//平台的android.jar的路径 .setUseConditionalKeepRules(parameters.useConditionalKeepRules.get()) .setUseMinimalKeepRules(parameters.useMinimalKeepRules.get()) .setUseFinalIds(parameters.useFinalIds.get()) .setEmitStableIdsFile(parameters.outputStableIdsFile.orNull?.asFile) .setConsumeStableIdsFile(stableIdsInputFile) .setLocalSymbolTableFile(parameters.localResourcesFile.orNull?.asFile) .setMergeBlameDirectory(parameters.mergeBlameDirectory.get().asFile) .setManifestMergeBlameFile(parameters.manifestMergeBlameFile.orNull?.asFile) .apply { val compiledDependencyResourceFiles = parameters.compiledDependenciesResources.files // In the event of running process[variant]AndroidTestResources // on a module that depends on a module with no precompiled resources, // we must avoid passing the compiled resource directory to AAPT link. if (compiledDependencyResourceFiles.all(File::exists)) { //添加依赖库中的编译文件 addResourceDirectories( compiledDependencyResourceFiles.reversed().toImmutableList()) } }
if (parameters.namespaced.get()) { configBuilder.setStaticLibraryDependencies(ImmutableList.copyOf(parameters.dependencies.files)) } else { if (generateRClass) { //生生成R.txt文件 configBuilder.setLibrarySymbolTableFiles(parameters.dependencies.files) } //添加资源编译任务的产物,build/intermediates/merged_res/debug/目录的文件 configBuilder.addResourceDir(checkNotNull(parameters.inputResourcesDirectory.orNull?.asFile)) }
val logger = Logging.getLogger(LinkApplicationAndroidResourcesTask::class.java)