blob: c682edaf0f1e6c6b90f2cf4a0cee5ca861cb8875 [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.build.gradle.internal.scope
import com.android.SdkConstants
import com.android.build.api.artifact.Artifact
import com.android.build.api.artifact.ArtifactKind
import com.android.build.api.artifact.SingleArtifact
import com.android.build.gradle.internal.api.BaselineProfiles
import com.android.build.gradle.internal.tasks.GenerateRuntimeEnabledSdkTableTask
import com.android.builder.internal.packaging.IncrementalPackager.VERSION_CONTROL_INFO_FILE_NAME
import org.gradle.api.file.Directory
import org.gradle.api.file.FileSystemLocation
import org.gradle.api.file.RegularFile
/**
* A type of output generated by a task.
*
* @param finalizingArtifact a list of Artifact types that this type is finalizing. This mean
* that the task producing this artifact type will be used to finalize the tasks producing the
* elements of that list.
*/
@Suppress("ClassName")
sealed class
InternalArtifactType<T : FileSystemLocation>(
kind: ArtifactKind<T>,
category: Category = Category.INTERMEDIATES,
private val folderName: String? = null,
private val fileName: String? = null,
val finalizingArtifact: List<Artifact<*>> = listOf(),
) : Artifact.Single<T>(kind, category) {
// --- classes ---
// These are direct task outputs. If you are looking for all the classes of a
// module: InternalArtifactType<RegularFile>(FILE), Replaceable use AnchorOutputType.ALL_CLASSES
// Javac task output.
object JAVAC: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Kotlin Built-in Support compile task output
object KOTLINC: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// --- Published classes ---
// Class-type task output for tasks that generate published classes.
// Packaged classes for library intermediate publishing
// This is for external usage. For usage inside a module use ALL_CLASSES
object RUNTIME_LIBRARY_CLASSES_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
/**
* A directory containing runtime classes. NOTE: It may contain either class files only
* (preferred) or a single jar only, see {@link AndroidArtifacts.ClassesDirFormat}.
*/
object RUNTIME_LIBRARY_CLASSES_DIR: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Packaged library classes published only to compile configuration. This is to allow other
// projects to compile again classes that were not additionally processed e.g. classes with
// Jacoco instrumentation (b/109771903).
object COMPILE_LIBRARY_CLASSES_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// Jar generated by the code shrinker
object SHRUNK_CLASSES: InternalArtifactType<RegularFile>(FILE), Replaceable
object SOURCE_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
object JAVA_DOC_DIR: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object JAVA_DOC_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// Dex archive artifacts for project.
object PROJECT_DEX_ARCHIVE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Dex archive artifacts for sub projects.
object SUB_PROJECT_DEX_ARCHIVE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Dex archive artifacts for external (Maven) libraries.
object EXTERNAL_LIBS_DEX_ARCHIVE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Dex archive artifacts for external (Maven) libraries processed using aritfact transforms.
object EXTERNAL_LIBS_DEX_ARCHIVE_WITH_ARTIFACT_TRANSFORMS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Dex archive artifacts for dex'ed classes coming from mixed scopes (to support legacy
// Transform API that can output classes belonging to multiple scopes).
object MIXED_SCOPE_DEX_ARCHIVE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Artifact for supporting faster incremental dex archive building. This artifact contains
// information about inputs and it should not be consumed by other tasks.
object DEX_ARCHIVE_INPUT_JAR_HASHES: InternalArtifactType<RegularFile>(FILE), Replaceable
// Directory containing dependency graph(s) for desugaring
object DESUGAR_GRAPH: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// File containing the number of buckets used for dexing
object DEX_NUMBER_OF_BUCKETS_FILE: InternalArtifactType<RegularFile>(FILE)
// External file library dex archives (Desugared separately from module & project dependencies)
object EXTERNAL_FILE_LIB_DEX_ARCHIVES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// the packaged classes published by APK modules.
// This is for external compile/api usage. For usage inside a module use ALL_CLASSES
object COMPILE_APP_CLASSES_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// the packaged runtime classes published by APK modules.
// This is for external runtime usage. For usage inside a module use ALL_CLASSES
object RUNTIME_APP_CLASSES_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// The output of L8 invocation, which is the dex output of desugar lib jar
object DESUGAR_LIB_DEX: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Keep rules generated by L8, which are used to shrink the desugar lib jar
object DESUGAR_LIB_KEEP_RULES: InternalArtifactType<RegularFile>(FILE), Replaceable
object GLOBAL_SYNTHETICS_PROJECT: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object GLOBAL_SYNTHETICS_SUBPROJECT: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object GLOBAL_SYNTHETICS_EXTERNAL_LIB: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object GLOBAL_SYNTHETICS_MIXED_SCOPE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object GLOBAL_SYNTHETICS_EXTERNAL_LIBS_ARTIFACT_TRANSFORM: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object GLOBAL_SYNTHETICS_FILE_LIB: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Global synthetics generated by d8, merged by us and to be published from dynamic feature modules
object GLOBAL_SYNTHETICS_MERGED: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Global synthetics in dex format to be packaged in apk/aab when native multiDex is supported
object GLOBAL_SYNTHETICS_DEX: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// --- java res ---
// local java resources
object JAVA_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// merged java resources
object MERGED_JAVA_RES: InternalArtifactType<RegularFile>(FILE), Replaceable, Transformable
// java res generated by the code shrinker to be published back to the dynamic-feature modules
object FEATURE_SHRUNK_JAVA_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Full jar with both classes and java res.
object FULL_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// The jacoco code coverage from the connected tests
object CODE_COVERAGE: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS), Replaceable
// The jacoco code coverage from unit tests
object UNIT_TEST_CODE_COVERAGE: InternalArtifactType<RegularFile>(FILE, Category.OUTPUTS), Replaceable
// The jacoco code coverage from screenshot tests
object SCREENSHOT_TEST_CODE_COVERAGE: InternalArtifactType<RegularFile>(FILE, Category.OUTPUTS), Replaceable
// The jacoco code coverage from the device provider tasks.
object DEVICE_PROVIDER_CODE_COVERAGE: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS)
// The jacoco code coverage from the managed device instrumentation test tasks.
object MANAGED_DEVICE_CODE_COVERAGE: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS)
// The automatically generated jacoco config file
object JACOCO_CONFIG_RESOURCES: InternalArtifactType<Directory>(DIRECTORY)
// The android test results proto merged test results from all devices.
object MANAGED_DEVICE_ANDROID_TEST_MERGED_RESULTS_PROTO: InternalArtifactType<RegularFile>(FILE, Category.OUTPUTS)
// The android test results report HTML whose data are merged from all devices.
object MANAGED_DEVICE_ANDROID_TEST_MERGED_RESULTS_REPORT: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS)
// Additional test output data from the connected task
object CONNECTED_ANDROID_TEST_ADDITIONAL_OUTPUT: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS)
// Additional test output data from the device provider tasks.
object DEVICE_PROVIDER_ANDROID_TEST_ADDITIONAL_OUTPUT: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS)
// Additional test output data from the Gradle managed device tasks.
object MANAGED_DEVICE_ANDROID_TEST_ADDITIONAL_OUTPUT: InternalArtifactType<Directory>(DIRECTORY, Category.OUTPUTS)
// A folder with project classes instrumented with ASM visitors registered via
// variantProperties.transformClassesWith. Internal folder file structure reflects the hierarchy
// of namespaces
// This is a temporary artifact until we have a transformable project classes artifact
object ASM_INSTRUMENTED_PROJECT_CLASSES : InternalArtifactType<Directory>(DIRECTORY), Replaceable
// A folder with project jars instrumented with ASM visitors registered via
// variantProperties.transformClassesWith
// This is a temporary artifact until we have a transformable project classes artifact
object ASM_INSTRUMENTED_PROJECT_JARS : InternalArtifactType<Directory>(DIRECTORY), Replaceable
// [ASM_INSTRUMENTED_PROJECT_CLASSES] after recalculating the stack frames of all project classes
object FIXED_STACK_FRAMES_ASM_INSTRUMENTED_PROJECT_CLASSES : InternalArtifactType<Directory>(DIRECTORY), Replaceable
// [ASM_INSTRUMENTED_PROJECT_JARS] after recalculating the stack frames of all project jars
object FIXED_STACK_FRAMES_ASM_INSTRUMENTED_PROJECT_JARS : InternalArtifactType<Directory>(DIRECTORY), Replaceable
// --- android res ---
// generated res
object GENERATED_RES: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED,), Replaceable
// output of the resource merger ready for aapt.
object MERGED_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// folder for the blame report on the merged resources
object MERGED_RES_BLAME_FOLDER: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// folder for the incremental support.
object MERGED_RES_INCREMENTAL_FOLDER: InternalArtifactType<Directory>(DIRECTORY,
Category.INTERMEDIATES,
"incremental",
), Replaceable
object GENERATED_PNGS_RES: InternalArtifactType<Directory>(
DIRECTORY,
Category.GENERATED,
"res/pngs",
), Replaceable
object NESTED_RESOURCES_VALIDATION_REPORT: InternalArtifactType<RegularFile>(FILE)
// File containing map between a source set identifier and an absolute resource sourceset path
// for generating absolute paths in resource linking error messages.
object SOURCE_SET_PATH_MAP: InternalArtifactType<RegularFile>(FILE), Replaceable
// The R class jar for compile classpath use.
object COMPILE_R_CLASS_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// output of the resource merger for unit tests and the resource shrinker.
object MERGED_NOT_COMPILED_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Directory containing config file for unit testing with resources
object UNIT_TEST_CONFIG_DIRECTORY: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// compiled resources (output of aapt)
object PROCESSED_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// Processed res after an AAPT2 optimize operation
object OPTIMIZED_PROCESSED_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// package resources for aar publishing.
object PACKAGED_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// R.txt output for libraries - contains mock resource IDs used only at compile time.
object COMPILE_SYMBOL_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// Synthetic artifacts
object SYMBOL_LIST_WITH_PACKAGE_NAME: InternalArtifactType<RegularFile>(FILE), Replaceable
//Resources defined within the current module.
object LOCAL_ONLY_SYMBOL_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// Merged package aware R files from dependencies, used for workaround for b/183423660
object MERGED_DEPENDENCIES_SYMBOL_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// Partial R.txt directory
object LOCAL_ONLY_PARTIAL_SYMBOL_DIRECTORY: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// public.txt output This file might not exist if the project does not declare any public resources.
object PUBLIC_RES: InternalArtifactType<RegularFile>(FILE), Replaceable
object SHRUNK_PROCESSED_RES: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// linked res for the unified bundle
object LINKED_RES_FOR_BUNDLE: InternalArtifactType<RegularFile>(FILE), Replaceable
object LEGACY_SHRUNK_LINKED_RES_FOR_BUNDLE: InternalArtifactType<RegularFile>(FILE), Replaceable
object COMPILED_LOCAL_RESOURCES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object STABLE_RESOURCE_IDS_FILE: InternalArtifactType<RegularFile>(FILE)
// final output of the locale config generator.
object GENERATED_LOCALE_CONFIG: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// intermediate output of the locale config generator.
object SUPPORTED_LOCALE_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// Artifacts for legacy multidex
object LEGACY_MULTIDEX_AAPT_DERIVED_PROGUARD_RULES: InternalArtifactType<RegularFile>(FILE), Replaceable
object LEGACY_MULTIDEX_MAIN_DEX_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// The R class jar generated from R.txt for application and tests
object COMPILE_AND_RUNTIME_NOT_NAMESPACED_R_CLASS_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// Information neeeded to resolve included navigation graphs into intent filters
object NAVIGATION_JSON: InternalArtifactType<RegularFile>(FILE), Replaceable
// Similar to [NAVIGATION_JSON], but it lacks the source file information, which shouldn't be in
// the AAR.
object NAVIGATION_JSON_FOR_AAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// --- Namespaced android res ---
// An AAPT2 static library: InternalArtifactType<RegularFile>(FILE), Replaceable containing only the current sub-project's resources.
object RES_STATIC_LIBRARY: InternalArtifactType<RegularFile>(FILE), Replaceable
// Final R class sources (to package)
object RUNTIME_R_CLASS_SOURCES: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED)
// Final R class classes (for packaging)
object RUNTIME_R_CLASS_CLASSES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// --- JNI libs ---
// packaged JNI for inter-project intermediate publishing
object LIBRARY_JNI: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// packaged JNI for AAR publishing
object LIBRARY_AND_LOCAL_JARS_JNI: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// source folder jni libs merged into a single folder
object MERGED_JNI_LIBS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// source folder shaders merged into a single folder
object MERGED_SHADERS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// source folder machine learning models merged into a single folder
object MERGED_ML_MODELS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// native libs used by profilers
object PROFILERS_NATIVE_LIBS: InternalArtifactType<Directory>(DIRECTORY)
// native libs stripped of debug symbols
object STRIPPED_NATIVE_LIBS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// debug metadata extracted from native libs, saved as files with *.so.dbg extension
object NATIVE_DEBUG_METADATA: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// symbol tables extracted from native libs, saved as files with *.so.sym extension
object NATIVE_SYMBOL_TABLES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// a zip containing all of the NATIVE_DEBUG_METADATA or NATIVE_DEBUG_TABLES, to be published in
// the outputs folder if creating an APK instead of an app bundle.
object MERGED_NATIVE_DEBUG_METADATA: InternalArtifactType<RegularFile>(FILE, Category.OUTPUTS, "native-debug-symbols"), Replaceable
// native libs to be packaged with test components instead of main components.
object MERGED_TEST_ONLY_NATIVE_LIBS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Partial prefab directory without libraries built yet.
object PREFAB_PACKAGE_CONFIGURATION: InternalArtifactType<RegularFile>(FILE), Replaceable
// Assembled prefab directory to be packaged in the AAR.
object PREFAB_PACKAGE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Assets created by compiling shader
object SHADER_ASSETS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object LIBRARY_ASSETS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// compressed assets, ready to be packaged in the APK.
object COMPRESSED_ASSETS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// AIDL headers "packaged" by libraries for consumers.
object AIDL_PARCELABLE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object AIDL_SOURCE_OUTPUT_DIR: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// renderscript headers "packaged" by libraries for consumers.
object RENDERSCRIPT_HEADERS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// source output for rs
object RENDERSCRIPT_SOURCE_OUTPUT_DIR: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// renderscript library
object RENDERSCRIPT_LIB: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// renderscript generated res
object RENDERSCRIPT_GENERATED_RES: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// An output of AndroidManifest.xml check.
// REMOVE ME (bug 139855995): This artifact can be removed in the new variant API, we haven't
// removed it yet for compatibility reasons.
object CHECK_MANIFEST_RESULT: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object COMPATIBLE_SCREEN_MANIFEST: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// multi-apk aware manifests that are used to create package, bundle and instant app manifests
object MERGED_MANIFESTS: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// manifests that end up being packaged in the aar or the apk file formats.
object PACKAGED_MANIFESTS: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// Same as above: InternalArtifactType<RegularFile>(FILE), Replaceable but the resource references have stripped namespaces.
object NON_NAMESPACED_LIBRARY_MANIFEST: InternalArtifactType<RegularFile>(FILE), Replaceable
object AAPT_FRIENDLY_MERGED_MANIFESTS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object INSTANT_APP_MANIFEST: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
object MANIFEST_METADATA: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
object MANIFEST_MERGE_REPORT: InternalArtifactType<RegularFile>(FILE), Replaceable
object MANIFEST_MERGE_BLAME_FILE: InternalArtifactType<RegularFile>(FILE), Replaceable
// Simplified android manifest with original package name.
// It's used to create namespaced res.apk static library.
object STATIC_LIBRARY_MANIFEST: InternalArtifactType<RegularFile>(FILE), Replaceable
// List of annotation processors for metrics.
object ANNOTATION_PROCESSOR_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// The sources/resources generated by annotation processors in the source output directory.
object AP_GENERATED_SOURCES: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// merged generated + consumer shrinker configs to be used when packaging rules into an AAR
object MERGED_CONSUMER_PROGUARD_FILE: InternalArtifactType<RegularFile>(FILE), Replaceable
// the directory that consumers of an AAR or feature module can use for additional proguard rules.
object CONSUMER_PROGUARD_DIR: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// the proguard rules produced by aapt.
object AAPT_PROGUARD_FILE: InternalArtifactType<RegularFile>(FILE), Replaceable
// the merger of a module's AAPT_PROGUARD_FILE and those of its feature(s)
object MERGED_AAPT_PROGUARD_FILE: InternalArtifactType<RegularFile>(FILE), Replaceable
// Jar file containing a compiled manifest.class file.
object COMPILE_MANIFEST_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// the directory of default ProGuard files
object DEFAULT_PROGUARD_FILES: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// directory containing an empty class annotated with a data binding annotation (it could be any
// data binding annotation), so that the Java compiler still invokes data binding in the case
// that data binding is used (e.g., in layout files) but the source code does not use data
// binding annotations.
object DATA_BINDING_TRIGGER: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// the data binding artifact for a library that gets published with the aar
object DATA_BINDING_ARTIFACT: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// the file into which data binding will output the list of classes that should be stripped in
// the packaging phase
object DATA_BINDING_EXPORT_CLASS_LIST: InternalArtifactType<RegularFile>(FILE), Replaceable
// the merged data binding artifacts from all the dependencies
object DATA_BINDING_DEPENDENCY_ARTIFACTS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// directory containing layout info files for data binding when merge-resources type == MERGE
object DATA_BINDING_LAYOUT_INFO_TYPE_MERGE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// directory containing layout info files for data binding when merge-resources type == PACKAGE
// see https://issuetracker.google.com/110412851
object DATA_BINDING_LAYOUT_INFO_TYPE_PACKAGE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// the data binding class log generated after compilation: InternalArtifactType<RegularFile>(FILE), Replaceable includes merged
// class info file
object DATA_BINDING_BASE_CLASS_LOG_ARTIFACT: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// source code generated by data binding tasks.
object DATA_BINDING_BASE_CLASS_SOURCE_OUT: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// The lint JAR to be published in the AAR.
object LINT_PUBLISH_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// Serialized Lint Model for a variant
object LINT_MODEL: InternalArtifactType<Directory>(DIRECTORY)
// Serialized Lint Model for a variant, with the partial results location set to
// LINT_VITAL_PARTIAL_RESULTS.
object LINT_VITAL_LINT_MODEL: InternalArtifactType<Directory>(DIRECTORY)
// Serialized Lint Model for a variant's unit test component
object UNIT_TEST_LINT_MODEL: InternalArtifactType<Directory>(DIRECTORY)
// Serialized Lint Model for a variant's android test component
object ANDROID_TEST_LINT_MODEL: InternalArtifactType<Directory>(DIRECTORY)
// Serialized Lint Model for a variant's test fixtures component
object TEST_FIXTURES_LINT_MODEL: InternalArtifactType<Directory>(DIRECTORY)
// Lint reports
object LINT_TEXT_REPORT: InternalArtifactType<RegularFile>(FILE, Category.REPORTS)
object LINT_HTML_REPORT: InternalArtifactType<RegularFile>(FILE, Category.REPORTS)
object LINT_XML_REPORT: InternalArtifactType<RegularFile>(FILE, Category.REPORTS)
object LINT_SARIF_REPORT: InternalArtifactType<RegularFile>(FILE, Category.REPORTS)
// Intermediate lint reports to be read and printed to stdout or stderr
object LINT_INTERMEDIATE_TEXT_REPORT: InternalArtifactType<RegularFile>(FILE)
object LINT_VITAL_INTERMEDIATE_TEXT_REPORT: InternalArtifactType<RegularFile>(FILE)
// Files holding the corresponding lint invocation's return value
object LINT_RETURN_VALUE: InternalArtifactType<RegularFile>(FILE)
object LINT_VITAL_RETURN_VALUE: InternalArtifactType<RegularFile>(FILE)
// Partial lint results, which are the module-specific lint results generated when running lint
// with the --analyze-only flag. These partial results are merged into a final report
// downstream.
object LINT_PARTIAL_RESULTS: InternalArtifactType<Directory>(DIRECTORY)
object LINT_VITAL_PARTIAL_RESULTS: InternalArtifactType<Directory>(DIRECTORY)
// Partial lint results for a variant's unit test component
object UNIT_TEST_LINT_PARTIAL_RESULTS: InternalArtifactType<Directory>(DIRECTORY)
// Partial lint results for a variant's android test component
object ANDROID_TEST_LINT_PARTIAL_RESULTS: InternalArtifactType<Directory>(DIRECTORY)
// Partial lint results for a variant's test fixtures component
object TEST_FIXTURES_LINT_PARTIAL_RESULTS: InternalArtifactType<Directory>(DIRECTORY)
// File containing lint model metadata to be included in the LOCAL_AAR_FOR_LINT file
object LINT_MODEL_METADATA: InternalArtifactType<RegularFile>(FILE), Replaceable
// Local .aar file used when running lint from a downstream module
object LOCAL_AAR_FOR_LINT: InternalArtifactType<RegularFile>(FILE), Replaceable
// the zip file output of the extract annotation class.
object ANNOTATIONS_ZIP: InternalArtifactType<RegularFile>(FILE), Replaceable
// Optional recipe file (only used for libraries) which describes typedefs defined in the
// library: InternalArtifactType<RegularFile>(FILE), Replaceable and how to process them (typically which typedefs to omit during packaging).
object ANNOTATIONS_TYPEDEF_FILE: InternalArtifactType<RegularFile>(FILE), Replaceable
// The classes.jar for the AAR
object AAR_MAIN_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// The libs/ directory for the AAR: InternalArtifactType<RegularFile>(FILE), Replaceable containing secondary jars
object AAR_LIBS_DIRECTORY: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The AAR metadata file, specifying consumer constraints
object AAR_METADATA: InternalArtifactType<RegularFile>(FILE), Replaceable
object APK_FOR_LOCAL_TEST: InternalArtifactType<RegularFile>(FILE), Replaceable
// zip of APK + mapping files used when publishing the APKs to a repo
object APK_ZIP: InternalArtifactType<RegularFile>(FILE, Category.OUTPUTS, "apk-zips")
// an intermediate bundle that contains only the current module
object MODULE_BUNDLE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// directory with intermediate bundles of the asset packs for the app.
object ASSET_PACK_BUNDLE: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The main dex list for the bundle: InternalArtifactType<RegularFile>(FILE), Replaceable unlike the main dex list for a monolithic application: InternalArtifactType<RegularFile>(FILE), Replaceable this
// analyzes all of the dynamic feature classes too.
object MAIN_DEX_LIST_FOR_BUNDLE: InternalArtifactType<RegularFile>(FILE), Replaceable
// The bundle artifact including feature modulee used as the base for further processing
// like extracting APKs. It's cheaper to produce but not suitable as a final artifact to send
// to the Play Store.
// Can be transformed by shrinking resources in originally built bundle.
// This is only valid for the base module.
object INTERMEDIARY_BUNDLE: InternalArtifactType<RegularFile>(FILE), Transformable {
override fun getFileSystemLocationName(): String {
return "intermediary-bundle.aab"
}
}
// APK Set archive with APKs generated from a bundle.
object APKS_FROM_BUNDLE: InternalArtifactType<RegularFile>(FILE), Replaceable
// APKS file containing split APK files.
object SDK_SPLITS_APKS: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// output of ExtractApks applied to APKS_FROM_BUNDLE and a device config.
object EXTRACTED_APKS: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// APK files extracted from SDK_SPLITS_APKS APKS for local Privacy Sandbox deployment.
object EXTRACTED_SDK_APKS: InternalArtifactType<Directory>(DIRECTORY), Replaceable, ContainsMany
// The manifest meant to be consumed by the bundle.
object BUNDLE_MANIFEST: InternalArtifactType<RegularFile>(FILE), Replaceable
object EXTRACTED_APKS_FROM_PRIVACY_SANDBOX_SDKs: InternalArtifactType<Directory>(DIRECTORY), ContainsMany
object EXTRACTED_APKS_FROM_PRIVACY_SANDBOX_SDKs_IDE_MODEL: InternalArtifactType<RegularFile>(FILE)
// The proto passed to bundle tool to instruct which privacy sandbox SDKs are used
object PRIVACY_SANDBOX_SDK_RUNTIME_CONFIG_FILE: InternalArtifactType<RegularFile>(FILE)
object PRIVACY_SANDBOX_SDK_R_PACKAGE_JAR: InternalArtifactType<RegularFile>(FILE)
// file containing the metadata for the full feature set. This contains the feature names: InternalArtifactType<RegularFile>(FILE), Replaceable
// the res ID offset: InternalArtifactType<RegularFile>(FILE), Replaceable both tied to the feature module path. Published by the base for the
// other features to consume and find their own metadata.
object FEATURE_SET_METADATA: InternalArtifactType<RegularFile>(FILE), Replaceable
// file containing the module information (like its application ID) to synchronize all base
// and dynamic feature. This is published by the base feature and installed application module.
object BASE_MODULE_METADATA: InternalArtifactType<RegularFile>(FILE), Replaceable
// file containing only the application ID. It is used to synchronize all feature plugins
// with the application module's application ID.
object METADATA_APPLICATION_ID: InternalArtifactType<RegularFile>(FILE), Replaceable
object FEATURE_RESOURCE_PKG: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// File containing the list of packaged dependencies of a given APK. This is consumed
// by other APKs to avoid repackaging the same thing.
object PACKAGED_DEPENDENCIES: InternalArtifactType<RegularFile>(FILE), Replaceable
// The information about the features in the app that is necessary for the data binding
// annotation processor (for base feature compilation). Created by the
// DataBindingExportFeatureApplicationIdsTask and passed down to the annotation processor via
// processor args.
object FEATURE_DATA_BINDING_BASE_FEATURE_INFO: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The information about the feature that is necessary for the data binding annotation
// processor (for feature compilation). Created by DataBindingExportFeatureInfoTask and passed
// into the annotation processor via processor args.
object FEATURE_DATA_BINDING_FEATURE_INFO: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The base dex files output by the DexSplitter.
object BASE_DEX: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The feature dex files output by the DexSplitter from the base. The base produces and
// publishes these files when there's multi-apk code shrinking.
object FEATURE_DEX: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The feature dex files to be published from feature modules to the base for computing main
// dex list for bundle.
object FEATURE_PUBLISHED_DEX: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// The class files for a module and all of its runtime dependencies.
object MODULE_AND_RUNTIME_DEPS_CLASSES: InternalArtifactType<RegularFile>(FILE), Replaceable
// The name of a dynamic or legacy instant feature`
object FEATURE_NAME: InternalArtifactType<RegularFile>(FILE), Replaceable
// The signing configuration data the feature modules should be using which is taken from the
// application module. Also used for androidTest variants (bug 118611693). This has already
// been validated
object SIGNING_CONFIG_DATA: InternalArtifactType<RegularFile>(FILE), Replaceable
// The information about which signature versions the application module is using. The feature
// modules should use the same versions.
object SIGNING_CONFIG_VERSIONS: InternalArtifactType<RegularFile>(FILE), Replaceable
// The validated signing config output: InternalArtifactType<RegularFile>(FILE), Replaceable to allow the task to be up to date: InternalArtifactType<RegularFile>(FILE), Replaceable and for allowing
// other tasks to depend on the output.
object VALIDATE_SIGNING_CONFIG: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Project metadata
object METADATA_FEATURE_DECLARATION: InternalArtifactType<Directory>(DIRECTORY), Replaceable
object METADATA_FEATURE_MANIFEST: InternalArtifactType<RegularFile>(FILE), Replaceable
// The library dependencies report: InternalArtifactType<RegularFile>(FILE), Replaceable direct and indirect: InternalArtifactType<RegularFile>(FILE), Replaceable published for the entire app to
// package in the bundle.
object BUNDLE_DEPENDENCY_REPORT: InternalArtifactType<RegularFile>(FILE), Replaceable
// Config file specifying how to protect app's integrity
object APP_INTEGRITY_CONFIG: InternalArtifactType<RegularFile>(FILE), Replaceable
// A dummy output (folder) result of CheckDuplicateClassesTask execution
object DUPLICATE_CLASSES_CHECK: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// A dummy output (folder) result of CheckAarMetadataTask execution
object AAR_METADATA_CHECK: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// File containing all generated proguard rules from Javac (by e.g. dagger) merged together
object GENERATED_PROGUARD_FILE: InternalArtifactType<RegularFile>(FILE), Replaceable
// File containing unused dependencies and dependencies that can be configured as
// implementation in the current variant
object ANALYZE_DEPENDENCIES_REPORT: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Directory containing generated BuildConfig Java class.
object GENERATED_BUILD_CONFIG_JAVA: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// File in JAR format containing compiled .class BuildConfig.
object COMPILE_BUILD_CONFIG_JAR: InternalArtifactType<RegularFile>(FILE), Replaceable
// File containing SDK dependency block value.
object SDK_DEPENDENCY_DATA: InternalArtifactType<RegularFile>(FILE), Replaceable
// Public file containing SDK dependency (unencrypted).
object SDK_DEPENDENCY_DATA_PUBLIC: InternalArtifactType<RegularFile>(FILE, Category.OUTPUTS, "sdk-dependencies"), Replaceable
// Artifacts privately shared with Android Studio.
object APK_IDE_MODEL: InternalArtifactType<RegularFile>(FILE), Replaceable
object BUNDLE_IDE_MODEL : InternalArtifactType<RegularFile>(FILE), Replaceable
object APK_FROM_BUNDLE_IDE_MODEL : InternalArtifactType<RegularFile>(FILE)
object APK_FROM_SDKS_IDE_MODEL : InternalArtifactType<RegularFile>(FILE)
// and the redirect file pointing to the one above, these artifacts are final and can not be
// replaced as their value is transferred in the IDE model.
object APK_IDE_REDIRECT_FILE: InternalArtifactType<RegularFile>(
kind = FILE,
finalizingArtifact = listOf(SingleArtifact.APK),
)
object BUNDLE_IDE_REDIRECT_FILE : InternalArtifactType<RegularFile>(
kind = FILE,
finalizingArtifact = listOf(SingleArtifact.BUNDLE)
)
object APK_FROM_BUNDLE_IDE_REDIRECT_FILE : InternalArtifactType<RegularFile>(
kind = FILE,
finalizingArtifact = listOf(EXTRACTED_APKS),
)
object ASSET_PACK_MANIFESTS: InternalArtifactType<Directory>(DIRECTORY)
object LINKED_RES_FOR_ASSET_PACK: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// Directory containing all ML model classes that are auto generated by the ML code-gen task.
object ML_SOURCE_OUT: InternalArtifactType<Directory>(DIRECTORY, Category.GENERATED), Replaceable
// result of VerifyLibraryResourcesTask, only used to verify correctness but never consumed.
object VERIFIED_LIBRARY_RESOURCES: InternalArtifactType<Directory>(DIRECTORY)
object VERIFIED_LIBRARY_CLASSES: InternalArtifactType<Directory>(DIRECTORY)
// File containing app metadata to be included in the APK and .aab files for analytics.
object APP_METADATA: InternalArtifactType<RegularFile>(FILE), Replaceable
// Micro APK manifest file
object MICRO_APK_MANIFEST_FILE: InternalArtifactType<RegularFile>(FILE)
// Micro APK res directory
object MICRO_APK_RES: InternalArtifactType<Directory>(DIRECTORY)
// Human-readable Art profile artifacts; combines art profiles from various project sources
object MERGED_ART_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_ART_PROFILE
)
// This is the Art profile expanded by the app and rewritten by the R8 task
// When minified is enabled, it is used to produce the final binary art profile
object R8_ART_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_ART_PROFILE
), Transformable
// This is the Art profile expanded by the L8 desugared lib jar and rewritten by the L8 task
// When desugaring is enabled, it is to produce the final binary art profile
object L8_ART_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_ART_PROFILE
), Transformable
object LIBRARY_ART_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_ART_PROFILE
)
// This is the Art profile that combines the app's profile and the L8 profile when present,
// which is compiled into the binary art profile
// Currently, it is not consumed, and only used in CompileArtProfileTask
object COMBINED_ART_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_ART_PROFILE
)
// binary art profile artifacts.
object BINARY_ART_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_BINARY_ART_PROFILE
)
object BINARY_ART_PROFILE_METADATA: InternalArtifactType<RegularFile>(
FILE,
fileName = SdkConstants.FN_BINARY_ART_PROFILE_METADATA
)
// Directory containing the dex metadata files to be installed as baseline profiles on devices
// It should also contain a file which writes out mappings from API level to ".dm" file
object DEX_METADATA_DIRECTORY: InternalArtifactType<Directory>(DIRECTORY)
object VERSION_CONTROL_INFO_FILE: InternalArtifactType<RegularFile>(
FILE,
fileName = VERSION_CONTROL_INFO_FILE_NAME
)
object RUNTIME_ENABLED_SDK_TABLE : InternalArtifactType<RegularFile>(
FILE,
fileName = GenerateRuntimeEnabledSdkTableTask.RUNTIME_ENABLED_SDK_TABLE_FILE_NAME)
object USES_SDK_LIBRARY_SPLIT_FOR_LOCAL_DEPLOYMENT : InternalArtifactType<Directory>(DIRECTORY), Replaceable
object SCREENSHOTS_RENDERED: InternalArtifactType<Directory>(DIRECTORY), Replaceable
// This is the startup profile containing the profiles from all variant sources
object MERGED_STARTUP_PROFILE: InternalArtifactType<RegularFile>(
FILE,
fileName = BaselineProfiles.StartupProfileFileName
)
override fun getFileSystemLocationName(): String {
return fileName ?: super.getFileSystemLocationName()
}
override fun getFolderName(): String {
return folderName ?: super.getFolderName()
}
override fun toString(): String {
return "InternalArtifactType.${name()}"
}
}