TestAndroidComponentsExtension

interface TestAndroidComponentsExtension : AndroidComponentsExtension<TestExtension, TestVariantBuilder, TestVariant>

Extension for the Android Test Gradle Plugin components.

This is the androidComponents block when the com.android.test plugin is applied.

Only the Android Gradle Plugin should create instances of interfaces in com.android.build.api.variant.

Inherited functions

Unit beforeVariants(selector: VariantSelector = selector().all(), callback: (VariantBuilderT) -> Unit)

Method to register a callback to be called with VariantBuilderT instances that satisfies the selector. The callback will be called as soon as the VariantBuilderT instance has been created but before any com.android.build.api.artifact.Artifact has been determined, therefore the build flow can still be changed when the callback is invoked.

At this stage, access to the DSL objects is disallowed, use finalizeDsl method to programmatically access the DSL objects before the VariantBuilderT object is built.

Example without selection:

androidComponents {
    beforeVariants {
        println("Called with variant : ${'$'}name")
    }
}

Example with selection:

androidComponents {
    val debug = selector().withBuildType("debug")
    beforeVariants(debug) {
        println("Called with variant : ${'$'}name")
    }
}

Unit beforeVariants(selector: VariantSelector = selector().all(), callback: Action<VariantBuilderT>)

Action based version of beforeVariants above.

Unit finalizeDSl(callback: Action<DslExtensionT>)

Action based version of finalizeDsl above.

Unit onVariants(selector: VariantSelector = selector().all(), callback: (VariantT) -> Unit)

Allow for registration of a callback to be called with variant instances of type VariantT once the list of com.android.build.api.artifact.Artifact has been determined.

At this stage, access to the DSL objects is disallowed and access to the VariantBuilderT instance is limited to read-only access.

Because the list of artifacts (including private ones) is final, one cannot change the build flow anymore as org.gradle.api.Tasks are now expecting those artifacts as inputs. However users can modify such artifacts by replacing or transforming them, see com.android.build.api.artifact.Artifacts for details.

Code executing in the callback also has access to the VariantT information which is used to configure org.gradle.api.Task inputs (for example, the buildConfigFields). Such information represented as org.gradle.api.provider.Property can still be modified ensuring that all org.gradle.api.Tasks created by the Android Gradle Plugin use the updated value.

Unit onVariants(selector: VariantSelector = selector().all(), callback: Action<VariantT>)

Action based version of onVariants above.

Unit registerExtension(dslExtension: DslExtension, configurator: (variantExtensionConfig: VariantExtensionConfig<VariantT>) -> VariantExtension)

Register an Android Gradle Plugin DSL extension.

Please see Gradle documentation first at : https://docs.gradle.org/current/userguide/custom_plugins.html#sec:getting_input_from_the_build

A lambda must be provided to create and configure the variant scoped object that will be stored with the Android Gradle Plugin com.android.build.api.variant.Variant instance.

Variant Scoped objects should use org.gradle.api.provider.Property for its mutable state to allow for late binding. (see com.android.build.api.variant.Variant for examples).

VariantSelector selector()

Creates a VariantSelector instance that can be configured to reduce the set of ComponentBuilder instances participating in the beforeVariants and onVariants callback invocation.

Unit finalizeDsl(callback: (T) -> Unit)

API to customize the DSL Objects programmatically after they have been evaluated from the build files and before used in the build process next steps like variant or tasks creation.

Example of a build type creation:

androidComponents.finalizeDsl { extension ->
    extension.buildTypes.create("extra")
}

Unit finalizeDsl(callback: Action<T>)

Action based version of finalizeDsl above.

Inherited properties

AndroidPluginVersion pluginVersion

The version of the Android Gradle Plugin currently in use.

SdkComponents sdkComponents

Provides access to underlying Android SDK and build-tools components like adb.