# AndroidComponentsExtension

# AndroidComponentsExtension

```
interface AndroidComponentsExtension<DslExtensionT : CommonExtension<*, *, *, *>, VariantBuilderT : VariantBuilder, VariantT : Variant> : DslLifecycle<DslExtensionT>
```

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [com.android.build.api.extension.AndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#) |

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known Direct Subclasses [ApplicationAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/ApplicationAndroidComponentsExtension),[DynamicFeatureAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/DynamicFeatureAndroidComponentsExtension),[LibraryAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/LibraryAndroidComponentsExtension),[TestAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/TestAndroidComponentsExtension) |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------| | [ApplicationAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/ApplicationAndroidComponentsExtension)       | <br /> | | [DynamicFeatureAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/DynamicFeatureAndroidComponentsExtension) | <br /> | | [LibraryAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/LibraryAndroidComponentsExtension)               | <br /> | | [TestAndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/TestAndroidComponentsExtension)                     | <br /> | |

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ### Public methods                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ||
|-----------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                    | [beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)` `=` selector().all(), `callback:` `(VariantBuilderT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Method to register a[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)to be called with VariantBuilderT instances that satisfies the[selector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/selector). |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                    | [beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20org.gradle.api.Action))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)`, `callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<VariantBuilderT>`)` [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))above.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                    | [finalizeDSl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#finalizeDSl(org.gradle.api.Action))`(`callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<DslExtensionT>`)` [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#finalizeDsl(kotlin.Function1))above.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                    | [finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#finalizeDsl(kotlin.Function1))`(`callback:` `(DslExtensionT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` API to customize the DSL Objects programmatically before the[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))is called.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| open[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                        | [onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)` `=` selector().all(), `callback:` `(VariantT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Allow for registration of a[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantT,%20kotlin.Unit)))/callback)to be called with variant instances of type VariantT once the list of[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.html#)has been determined.                                                                                                                                                                                                                             |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                    | [onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20org.gradle.api.Action))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)` `=` selector().all(), `callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<VariantT>`)` [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))above.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                    | [registerExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#registerExtension(com.android.build.api.variant.DslExtension,%20kotlin.Function1))`(`dslExtension:` `[DslExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/DslExtension.html#)`, `configurator:` `(variantExtensionConfig:` `[VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/VariantExtensionConfig.html#)<VariantT>)` `->` `[VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/VariantExtension.html#)`)` Register an Android Gradle Plugin DSL extension.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| abstract[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector) | [selector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#selector())`()` Creates a[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)instance that can be configured to reduce the set of[ComponentBuilder](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/component/ComponentBuilder.html#)instances participating in the[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))and[onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))callback invocation.                                                                                                                                                                                                                                                                                                                                                                                                |

| ### Inherited functions ||
|---|---|
| From class[DslLifecycle](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/DslLifecycle.html#) |------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/DslLifecycle.html#finalizeDsl(org.gradle.api.Action))`(`callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<T>`)` <br /> [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/DslLifecycle.html#finalizeDsl(kotlin.Function1))above. <br /> | ||

|                                                                                                                                                                                                        ### Properties                                                                                                                                                                                                        ||
|-----------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[AndroidPluginVersion](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/AndroidPluginVersion.html#) | [pluginVersion](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#pluginVersion:com.android.build.api.AndroidPluginVersion) The version of the Android Gradle Plugin currently in use.                  |
| abstract[SdkComponents](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/SdkComponents.html#)           | [sdkComponents](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#sdkComponents:com.android.build.api.dsl.SdkComponents) Provides access to underlying Android SDK and build-tools components like adb. |

## Public methods

### beforeVariants

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

Method to register a[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)to be called with VariantBuilderT instances that satisfies the[selector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/selector). The[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)will be called as soon as the VariantBuilderT instance has been created but before any[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.html#)has been determined, therefore the build flow can still be changed when the[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)is invoked.

At this stage, access to the DSL objects is disallowed, use[afterDsl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#)method to programmatically access the DSL objects before the VariantBuilderT object is built.

Example without selection:  

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

Example with selection:  

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

|                                                                                                                                                                                                 Parameters                                                                                                                                                                                                 ||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| selector:[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)=selector().all() | [VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)instance to select which instance of VariantBuilderT are of interest. By default, all instances are of interest. |
| callback:(VariantBuilderT)-\>[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                 | lambda to be called with each instance of VariantBuilderT of interest.                                                                                                                                                                          |

### beforeVariants

```
abstract fun beforeVariants(
    selector: VariantSelector, 
    callback: Action<VariantBuilderT>
): Unit
```

[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))above.  

### finalizeDSl

```
abstract fun finalizeDSl(callback: Action<DslExtensionT>): Unit
```

**Deprecated.**

[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#finalizeDsl(kotlin.Function1))above.  

### finalizeDsl

```
abstract fun finalizeDsl(callback: (DslExtensionT) -> Unit): Unit
```

API to customize the DSL Objects programmatically before the[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))is called.

Example of a build type creation:  

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

The list of variants will be finalized after all finalizeDsl Callbacks and cannot be altered in the other APIs like[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))or[onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1)).  

### onVariants

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

Allow for registration of a[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantT,%20kotlin.Unit)))/callback)to be called with variant instances of type VariantT once the list of[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifact.html#)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.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)s 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](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/artifact/Artifacts.html#)for details.

Code executing in the[callback](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#com.android.build.api.extension.AndroidComponentsExtension$onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1((com.android.build.api.extension.AndroidComponentsExtension.VariantT,%20kotlin.Unit)))/callback)also has access to the VariantT information which is used to configure[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)inputs (for example, the buildConfigFields). Such information represented as[org.gradle.api.provider.Property](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Property.html)can still be modified ensuring that all[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)s created by the Android Gradle Plugin use the updated value.  

### onVariants

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

[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))above.  

### registerExtension

```
@Incubating abstract fun registerExtension(
    dslExtension: DslExtension, 
    configurator: (variantExtensionConfig: VariantExtensionConfig<VariantT>) -> VariantExtension
): Unit
```

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](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/Variant.html#)instance.

Variant Scoped objects should use[org.gradle.api.provider.Property](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Property.html)for its mutable state to allow for late binding. (see[com.android.build.api.variant.Variant](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/Variant.html#)for examples).

|                                                                                                                                                                                                                                                                                                                                                                                             Parameters                                                                                                                                                                                                                                                                                                                                                                                             ||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dslExtension:[DslExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/DslExtension.html#)                                                                                                                                                                                                  | the DSL extension configuration.                                                                                                                                                                                                                                                                                                                                                                                                                      |
| configurator:(variantExtensionConfig:[VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/VariantExtensionConfig.html#)\<VariantT\>)-\>[VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/VariantExtension.html#) | a lambda to create a variant scoped object. The lambda is provided with the[VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/VariantExtensionConfig.html#)that can be used to retrieve the VariantT instance as well as DSL extensions registered with[DslExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/DslExtension.html#) |

| Return ||
|---|---|
| an sub type of[VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/VariantExtension.html#)instance that will be stored with the VariantT instance and can be retrieved by[Variant.getExtension](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/variant/Variant.html#getExtension(java.lang.Class))API. ||

### selector

```
abstract fun selector(): VariantSelector
```

Creates a[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)instance that can be configured to reduce the set of[ComponentBuilder](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/component/ComponentBuilder.html#)instances participating in the[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#beforeVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))and[onVariants](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/AndroidComponentsExtension#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))callback invocation.

| Return ||
|---|---|
| [VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/extension/VariantSelector)to select the variants of interest. ||

## Properties

### pluginVersion

```
abstract val pluginVersion: AndroidPluginVersion
```

The version of the Android Gradle Plugin currently in use.  

### sdkComponents

```
abstract val sdkComponents: SdkComponents
```

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

| Return ||
|---|---|
| [SdkComponents](https://developer.android.com/reference/tools/gradle-api/7.1/com/android/build/api/dsl/SdkComponents.html#)to access Android SDK used by Gradle. ||