# BuiltArtifacts

# BuiltArtifacts

<br />

```
interface BuiltArtifacts
```

<br />

*** ** * ** ***

Represents a[Collection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html)of[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)produced by a[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html).

Tasks in Android Gradle Plugin can produce more than one file in the output folder so any[Artifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact)with a[Artifact.kind](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact#kind())of type[com.android.build.api.artifact.ArtifactKind.DIRECTORY](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/ArtifactKind.DIRECTORY)can actually contain several produced[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html). For instance, when dealing with multi-apk, there will be several manifest files or APKs produced by the Android Gradle Plugin.

Each produced file can be identified with unique metadata like the list of filters and/or version code or version name. This instance will allow producer and consumer[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)s to easily match produced files with this metadata without relying on name mangling or other custom solutions.

Simple use of this facility can look like :  


    abstract class MyTask @inject constructor(val objectFactory: ObjectFactory): DefaultTask() {
        @get:InputDirectory
        abstract val input: DirectoryProperty
        @get:OutputDirectory
        abstract val output: DirectoryProperty
        @get:Internal
        abstract val artifactsLoader: Property

        @TaskAction
        fun taskAction() {
             val builtArtifacts= artifactsLoader.get().load(
                  objectFactory, input.get())

             TODO : TBD what will be surfaced here

             newBuiltArtifacts.save(output.get()))
        }
    }

This[BuiltArtifacts](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts)will abstract access to these produced files and provided some metadata associated with each file to be able to identify filters, version code or version name.

## Summary

|                                                                                                                                                                                                                                                  ### Nested types                                                                                                                                                                                                                                                   ||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [BuiltArtifacts.Companion](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts.Companion)             |                                                                                                                                                                                                                                                                                                                                                        |
| [BuiltArtifacts.TransformParams](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts.TransformParams) | Specialized version of Gradle's[WorkParameters](https://docs.gradle.org/current/javadoc/org/gradle/workers/WorkParameters.html)so we can retrieve the output file generated when transforming an instance of[BuiltArtifacts](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts)into a new one. |

|                                                                                                                                                                                         ### Public functions                                                                                                                                                                                          ||
|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [save](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts#save(org.gradle.api.file.Directory))`(out: `[Directory](https://docs.gradle.org/current/javadoc/org/gradle/api/file/Directory.html)`)` Saves the metadata associated with this instance into a folder. |

|                                                                                                                                                                                                                                                                                                                                                                                                                                              ### Public properties                                                                                                                                                                                                                                                                                                                                                                                                                                              ||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)                                                                                                                                                    | [applicationId](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts#applicationId()) Returns the application ID for these[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)instances.                                                                                                                                                                                                                                                                                                                                                         |
| [Artifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact)`<*>`                                                                                                               | [artifactType](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts#artifactType()) Identifies the[Artifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact)for this[Collection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html)of[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact), all[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)are the same type of artifact. |
| [Collection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html)`<`[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)`>` | [elements](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts#elements()) Returns the[Collection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html)of[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact).                                                                                                                                                                                                                                                                                               |
| [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)                                                                                                                                                    | [variantName](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifacts#variantName()) Identifies the variant name for these[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)                                                                                                                                                                                                                                                                                                                                                                      |

## Public functions

### save

```
fun save(out: Directory): Unit
```

Saves the metadata associated with this instance into a folder.  

|                                                                                                                         Parameters                                                                                                                          ||
|------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `out: `[Directory](https://docs.gradle.org/current/javadoc/org/gradle/api/file/Directory.html) | the[Directory](https://docs.gradle.org/current/javadoc/org/gradle/api/file/Directory.html)that can be used to save the metadata using a standard file name. |

## Public properties

### applicationId

```
val applicationId: String
```

Returns the application ID for these[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)instances.  

|                                                Returns                                                ||
|----------------------------------------------------------------------------------|---------------------|
| [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) | the application ID. |

### artifactType

```
val artifactType: Artifact<*>
```

Identifies the[Artifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact)for this[Collection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html)of[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact), all[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)are the same type of artifact.  

|                                                                                                                                                                                         Returns                                                                                                                                                                                          ||
|-----------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Artifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact)`<*>` | the[Artifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/artifact/Artifact)for all the[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)instances. |

### elements

```
val elements: Collection<BuiltArtifact>
```

Returns the[Collection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-collection/index.html)of[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact).  

### variantName

```
val variantName: String
```

Identifies the variant name for these[BuiltArtifact](https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/variant/BuiltArtifact)