# VariantExtensionConfig

# VariantExtensionConfig

<br />

```
@Incubating
public interface VariantExtensionConfig<VariantT extends Variant>
```

<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/8.3/null/com/android/build/api/variant/VariantExtension)for each[com.android.build.api.variant.Variant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Variant)instance.  

|                                                                Parameters                                                                 |
|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `<VariantT extends `[Variant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Variant)`>` | the type of[com.android.build.api.variant.Variant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Variant)object. |

## Summary

|                                                                                                                                                        ### Public methods                                                                                                                                                        |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T`                                                                                                                                                                                                         | `<T extends `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`> `[buildTypeExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#buildTypeExtension(java.lang.Class))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Class](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T> extensionType)` Returns the[variant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#variant())specific extension registered through the com.android.build.api.extension.DslExtension.buildTypeExtensionType API.                        |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` VariantT`                                                                                                                                                                                                  | [getVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#getVariant())`()` Gets the variant object the[com.android.build.api.variant.VariantExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtension)should be associated with.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[List](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T>` | `<T extends `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`> `[productFlavorsExtensions](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#productFlavorsExtensions(java.lang.Class))`(` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Class](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T> extensionType` `)` Returns the[variant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#variant())specific extension registered through the com.android.build.api.extension.DslExtension.productFlavorExtensionType API. |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T`                                                                                                                                                                                                         | `<T extends `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`> `[projectExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#projectExtension(java.lang.Class))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Class](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T> extensionType)` Returns the project (across variants) extension registered through the com.android.build.api.extension.DslExtension.projectExtensionType API.                                                                                                                                                       |

## Public methods

### buildTypeExtension

```
abstract @NonNull T <T extends Object> buildTypeExtension(@NonNull Class<@NonNull T> extensionType)
```

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

|                                                     Returns                                                     |
|-----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T` | the custom extension for the[variant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#variant())'s build type. |

### getVariant

```
abstract @NonNull VariantT getVariant()
```

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

### productFlavorsExtensions

```
abstract @NonNull List<@NonNull T> <T extends Object> productFlavorsExtensions(
    @NonNull Class<@NonNull T> extensionType
)
```

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

|                                                                                                                                                         Returns                                                                                                                                                         |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[List](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` T>` | a[List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)of[T](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/VariantExtensionConfig#productFlavorsExtensions(java.lang.Class))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/8.3/null/com/android/build/api/variant/Variant#productFlavors()) |

### projectExtension

```
abstract @NonNull T <T extends Object> projectExtension(@NonNull Class<@NonNull T> extensionType)
```

Returns the project (across variants) extension registered through the com.android.build.api.extension.DslExtension.projectExtensionType API.