# VariantBuilder

# VariantBuilder

```
interface VariantBuilder : ComponentBuilder
```

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

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known Direct Subclasses [ApplicationVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/ApplicationVariantBuilder),[DynamicFeatureVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/DynamicFeatureVariantBuilder),[LibraryVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/LibraryVariantBuilder),[TestVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/TestVariantBuilder) |---------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [ApplicationVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/ApplicationVariantBuilder)       | Application specific variant object that contains properties that will determine the variant's build flow.                                                           | | [DynamicFeatureVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/DynamicFeatureVariantBuilder) | <br />                                                                                                                                                               | | [LibraryVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/LibraryVariantBuilder)               | [VariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#)type for library projects                | | [TestVariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/TestVariantBuilder)                     | [VariantBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#)type for tests associated with a module. | |

Variant object that contains properties that must be set during configuration time as it changes the build flow for the variant.

## Summary

|                                                                                                                                                                                                                                       ### Public methods                                                                                                                                                                                                                                       ||
|--------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [registerExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#registerExtension(java.lang.Class,%20com.android.build.api.variant.VariantBuilder.registerExtension.T))`(`type:` `[Class](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html)<out` `T>`, `instance:` `T`)` Registers an extension object to the variant object. |

|                                                                                                                                                              ### Properties                                                                                                                                                               ||
|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | [enableUnitTest](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#enableUnitTest:kotlin.Boolean) Set to`true`if the variant's has any unit tests, false otherwise.                   |
| abstract[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)?        | [maxSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#maxSdk:kotlin.Int) Gets the maximum supported SDK Version for this variant.                                                |
| abstract[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)?        | [minSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdk:kotlin.Int) Gets or sets the minimum supported SDK Version for this variant.                                        |
| abstract[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?  | [minSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdkPreview:kotlin.String) Gets or sets the minimum supported SDK Version for this variant as a Preview codename. |
| abstract[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)         | [renderscriptTargetApi](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#renderscriptTargetApi:kotlin.Int) Specifies the bytecode version to be generated.                           |
| abstract[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)?        | [targetSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdk:kotlin.Int) Gets or sets the target SDK Version for this variant as a Preview codename.                       |
| abstract[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?  | [targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String) Gets or sets the target SDK Version for this variant as a Preview codename.      |
| abstract[Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | [unitTestEnabled](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#unitTestEnabled:kotlin.Boolean) Set to`true`if the variant's has any unit tests, false otherwise.                 |

## Public methods

### registerExtension

```
abstract fun <T : Any> registerExtension(
    type: Class<out T>, 
    instance: T
): Unit
```

Registers an extension object to the variant object. Extension objects can be looked up during the[com.android.build.api.extension.AndroidComponentsExtension.onVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/extension/AndroidComponentsExtension.html#onVariants(com.android.build.api.extension.VariantSelector,%20kotlin.Function1))callbacks by using the[Variant.getExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/Variant#getExtension(java.lang.Class))API.

This is very useful for third party plugins that want to attach some variant specific configuration object to the Android Gradle Plugin variant object and make it available to other plugins.

|                                                                                                                                                                                                                                                                                                                                               Parameters                                                                                                                                                                                                                                                                                                                                               ||
|-------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| type:[Class](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html)\<outT\> | the registered object type (can be a supertype of[instance](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#com.android.build.api.variant.VariantBuilder$registerExtension(java.lang.Class((com.android.build.api.variant.VariantBuilder.registerExtension.T)),%20com.android.build.api.variant.VariantBuilder.registerExtension.T)/instance)), this is the type that must be passed to the[Variant.getExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/Variant#getExtension(java.lang.Class))API. |
| instance:T                                                                          | the object to associate to the AGP Variant object.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |

## Properties

### enableUnitTest

```
abstract var enableUnitTest: Boolean
```

Set to`true`if the variant's has any unit tests, false otherwise. Value is[Boolean#True](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#)by default.  

### maxSdk

```
abstract var maxSdk: Int?
```

Gets the maximum supported SDK Version for this variant.  

### minSdk

```
abstract var minSdk: Int?
```

Gets or sets the minimum supported SDK Version for this variant. Setting this it will override previous calls of[minSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdk:kotlin.Int)and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdkPreview:kotlin.String)setters. Only one of[minSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdk:kotlin.Int)and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdkPreview:kotlin.String)should be set.

| Return ||
|---|---|
| the minimum supported SDK Version or null if[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdkPreview:kotlin.String)was used to set it. ||

### minSdkPreview

```
abstract var minSdkPreview: String?
```

Gets or sets the minimum supported SDK Version for this variant as a Preview codename. Setting this it will override previous calls of[minSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdk:kotlin.Int)and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdkPreview:kotlin.String)setters. Only one of[minSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdk:kotlin.Int)and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdkPreview:kotlin.String)should be set.

| Return ||
|---|---|
| the minimum supported SDK Version or null if[minSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#minSdk:kotlin.Int)was used to set it. ||

### renderscriptTargetApi

```
abstract var renderscriptTargetApi: Int
```

Specifies the bytecode version to be generated. We recommend you set this value to the lowest API level able to provide all the functionality you are using

| Return ||
|---|---|
| the renderscript target api or -1 if not specified. ||

### targetSdk

```
abstract var targetSdk: Int?
```

Gets or sets the target SDK Version for this variant as a Preview codename. Setting this it will override previous calls of[targetSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdk:kotlin.Int)and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String)setters. Only one of[targetSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdk:kotlin.Int)and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String)should be set.

| Return ||
|---|---|
| the target SDK Version or null if[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String)was used to set it. ||

### targetSdkPreview

```
abstract var targetSdkPreview: String?
```

Gets or sets the target SDK Version for this variant as a Preview codename. Setting this it will override previous calls of[targetSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdk:kotlin.Int)and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String)setters. Only one of[targetSdk](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdk:kotlin.Int)and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String)should be set.

| Return ||
|---|---|
| the target supported SDK Version or null if[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview:kotlin.String)was used to set it. ||

### unitTestEnabled

```
abstract var unitTestEnabled: Boolean
```

Set to`true`if the variant's has any unit tests, false otherwise. Value is[Boolean#True](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantBuilder#)by default.