# VariantExtensionConfig

# VariantExtensionConfig

```
@Incubating interface VariantExtensionConfig<VariantT : Variant>
```

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [com.android.build.api.variant.VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#) |

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known Direct Subclasses [VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/extension/VariantExtensionConfig.html#) |-----------------------------------------------------------------------------------------------------------------------------------------------------|--------| | [VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/extension/VariantExtensionConfig.html#) | <br /> | |

Configuration object passed to the lambda responsible for creating a[com.android.build.api.variant.VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtension)for each[com.android.build.api.variant.Variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/Variant)instance.

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                                                   ### Public methods                                                                                                                                                                                                                                                                                                                                                                                                                   ||
|-------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstractT                                                                                             | [buildTypeExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#buildTypeExtension(java.lang.Class))`(`extensionType:` `[Class](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html)<T>`)` Returns the[variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#variant:com.android.build.api.variant.VariantExtensionConfig.VariantT)specific extension registered through the[com.android.build.api.extension.DslExtension.buildTypeExtensionType](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#)API.                 |
| abstract[List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)\<T\> | [productFlavorsExtensions](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#productFlavorsExtensions(java.lang.Class))`(`extensionType:` `[Class](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html)<T>`)` Returns the[variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#variant:com.android.build.api.variant.VariantExtensionConfig.VariantT)specific extension registered through the[com.android.build.api.extension.DslExtension.productFlavorExtensionType](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#)API. |
| abstractT                                                                                             | [projectExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#projectExtension(java.lang.Class))`(`extensionType:` `[Class](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html)<T>`)` Returns the project (across variants) extension registered through the[com.android.build.api.extension.DslExtension.projectExtensionType](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#)API.                                                                                                                                                                                                       |

|                                                                                                                                                                                                             ### Properties                                                                                                                                                                                                              ||
|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstractVariantT | [variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#variant:com.android.build.api.variant.VariantExtensionConfig.VariantT) Gets the variant object the[com.android.build.api.variant.VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtension)should be associated with. |

## Public methods

### buildTypeExtension

```
abstract fun <T> buildTypeExtension(extensionType: Class<T>): T
```

Returns the[variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#variant:com.android.build.api.variant.VariantExtensionConfig.VariantT)specific extension registered through the[com.android.build.api.extension.DslExtension.buildTypeExtensionType](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#)API.

| Return ||
|---|---|
| the custom extension for the[variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#variant:com.android.build.api.variant.VariantExtensionConfig.VariantT)'s build type. ||

### productFlavorsExtensions

```
abstract fun <T> productFlavorsExtensions(extensionType: Class<T>): List<T>
```

Returns the[variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#variant:com.android.build.api.variant.VariantExtensionConfig.VariantT)specific extension registered through the[com.android.build.api.extension.DslExtension.productFlavorExtensionType](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#)API.

| Return ||
|---|---|
| a[List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)of T extension for all the defined product flavors in the project. The order of the elements is the same as the order of product flavors returned by the[Variant.productFlavors](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#) ||

### projectExtension

```
abstract fun <T> projectExtension(extensionType: Class<T>): T
```

Returns the project (across variants) extension registered through the[com.android.build.api.extension.DslExtension.projectExtensionType](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig#)API.

## Properties

### variant

```
abstract val variant: VariantT
```

Gets the variant object the[com.android.build.api.variant.VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtension)should be associated with.