Artifacts

public interface Artifacts


Access to the artifacts on a Variant object.

Artifacts are temporary or final files or directories that are produced by the Android Gradle plugin during the build. Depending on its configuration, each com.android.build.api.variant.VariantBuilder produces different versions of some of the output artifacts.

An example of temporary artifacts are .class files obtained from compiling source files that will eventually get transformed further into dex files. Final artifacts are APKs and bundle files that are not transformed further.

Artifacts are uniquely defined by their Artifact type and public artifact types that can be accessed from third-party plugins or build script are defined in SingleArtifact

Summary

Public methods

abstract void
<FileTypeT extends FileSystemLocation> add(
    @NonNull MultipleArtifact<@NonNull FileTypeT> type,
    @NonNull FileTypeT artifact
)

Add an existing FileTypeT for the passed Artifact.

abstract @NonNull ScopedArtifacts

Some artifacts do not have a single origin (like compiled from source code).

abstract @NonNull Provider<@NonNull FileTypeT>
<FileTypeT extends FileSystemLocation> get(
    @NonNull SingleArtifact<@NonNull FileTypeT> type
)

Get the Provider of FileTypeT for the passed Artifact.

abstract @NonNull Provider<@NonNull List<@NonNull FileTypeT>>
<FileTypeT extends FileSystemLocation> getAll(
    @NonNull MultipleArtifact<@NonNull FileTypeT> type
)

Get all the Providers of FileTypeT for the passed Artifact.

abstract @NonNull BuiltArtifactsLoader

Provides an implementation of BuiltArtifactsLoader that can be used to load built artifacts metadata.

abstract @NonNull TaskBasedOperation<@NonNull TaskT>
<TaskT extends Task> use(@NonNull TaskProvider<@NonNull TaskT> taskProvider)

Access Task based operations.

Public methods

add

abstract void <FileTypeT extends FileSystemLocation> add(
    @NonNull MultipleArtifact<@NonNull FileTypeT> type,
    @NonNull FileTypeT artifact
)

Add an existing FileTypeT for the passed Artifact. For task generated folder or file, do not use this API but instead use the use API.

Parameters
@NonNull MultipleArtifact<@NonNull FileTypeT> type

Type of the multiple artifact.

@NonNull FileTypeT artifact

is an existing static FileTypeT

forScope

abstract @NonNull ScopedArtifacts forScope(@NonNull ScopedArtifacts.Scope scope)

Some artifacts do not have a single origin (like compiled from source code). Some artifacts can be obtained from a combination of Tasks running or incoming dependencies. For example, classes used for dexing can come from compilation related tasks as well as .aar or .jar files expressed as a project dependency.

Therefore, these artifacts values can have a scope like ScopedArtifacts.Scope.PROJECT for values directly produced by this module (as a Task output most likely). Alternatively, the ScopedArtifacts.Scope.ALL adds all incoming dependencies (including transitive ones) to the previous scope.

For such cases, the artifact is represented as ScopedArtifact and can be manipulated by its own set of API that are scope aware.

Return ScopedArtifacts for a ScopedArtifacts.Scope

get

abstract @NonNull Provider<@NonNull FileTypeT> <FileTypeT extends FileSystemLocation> get(
    @NonNull SingleArtifact<@NonNull FileTypeT> type
)

Get the Provider of FileTypeT for the passed Artifact.

Parameters
@NonNull SingleArtifact<@NonNull FileTypeT> type

Type of the single artifact.

getAll

abstract @NonNull Provider<@NonNull List<@NonNull FileTypeT>> <FileTypeT extends FileSystemLocation> getAll(
    @NonNull MultipleArtifact<@NonNull FileTypeT> type
)

Get all the Providers of FileTypeT for the passed Artifact.

Parameters
@NonNull MultipleArtifact<@NonNull FileTypeT> type

Type of the multiple artifact.

getBuiltArtifactsLoader

abstract @NonNull BuiltArtifactsLoader getBuiltArtifactsLoader()

Provides an implementation of BuiltArtifactsLoader that can be used to load built artifacts metadata.

Returns
@NonNull BuiltArtifactsLoader

A thread safe implementation of BuiltArtifactsLoader that can be reused.

use

abstract @NonNull TaskBasedOperation<@NonNull TaskT> <TaskT extends Task> use(@NonNull TaskProvider<@NonNull TaskT> taskProvider)

Access Task based operations.

Parameters
@NonNull TaskProvider<@NonNull TaskT> taskProvider

The TaskProvider for the TaskT that will be producing and/or consuming artifact types.

Returns
@NonNull TaskBasedOperation<@NonNull TaskT>

A TaskBasedOperation object using the passed TaskProvider for all its operations.