# VariantBuilder

# VariantBuilder

<br />

```
interface VariantBuilder : ComponentBuilder
```

<br />

Known direct subclasses  
[ApplicationVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ApplicationVariantBuilder),[DynamicFeatureVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/DynamicFeatureVariantBuilder),[LibraryVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/LibraryVariantBuilder),[TestVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/TestVariantBuilder)  

|---------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ApplicationVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.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/8.0/com/android/build/api/variant/DynamicFeatureVariantBuilder) |                                                                                                                                                                     |
| [LibraryVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/LibraryVariantBuilder)               | [VariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder)type for library projects                |
| [TestVariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/TestVariantBuilder)                     | [VariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.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 functions                                                                                                                                                                                                                                                    ||
|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `<T : `[Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)`> `[registerExtension](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#registerExtension(java.lang.Class,kotlin.Any))`(type: `[Class](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html)`<T>, instance: T)` Registers an extension object to the variant object. |

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

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ### Inherited properties                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| From class[com.android.build.api.variant.ComponentBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentBuilder) |------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | [enable](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentBuilder#enable()) Set to`true`if the variant is active and should be configured, false otherwise. | | [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | [enabled](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentBuilder#enabled()) **This property is deprecated.**Will be removed in 8.0                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| From class[com.android.build.api.variant.ComponentIdentity](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentIdentity) |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`?`                                                                                                                                                                                                                                                                | [buildType](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentIdentity#buildType()) Build type name, might be replaced with access to locked DSL object once ready.                 | | [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`?`                                                                                                                                                                                                                                                                | [flavorName](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentIdentity#flavorName()) The multi-flavor name of the variant.                                                         | | [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)                                                                                                                                                                                                                                                                   | [name](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentIdentity#name()) Component's name.                                                                                         | | [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)`<`[Pair](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-pair/index.html)`<`[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`>>` | [productFlavors](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/ComponentIdentity#productFlavors()) List of flavor names, might be replaced with access to locked DSL objects once ready. | |

## Public functions

### registerExtension

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

Registers an extension object to the variant object. Extension objects can be looked up during the[AndroidComponentsExtension.onVariants](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/AndroidComponentsExtension#onVariants(com.android.build.api.variant.VariantSelector,kotlin.Function1))callbacks by using the[Variant.getExtension](https://developer.android.com/reference/tools/gradle-api/8.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](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html)`<T>` | the registered object type (can be a supertype of[instance](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#registerExtension(java.lang.Class,kotlin.Any))), this is the type that must be passed to the[Variant.getExtension](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/Variant#getExtension(java.lang.Class))API. |
| `instance: T`                                                                                           | the object to associate to the AGP Variant object.                                                                                                                                                                                                                                                                                                                                                                             |

## Public properties

### enableUnitTest

```
var enableUnitTest: Boolean
```

Set to`true`if the variant's has any unit tests, false otherwise. Value is Boolean#True by default.  

### maxSdk

```
var maxSdk: Int?
```

Gets the maximum supported SDK Version for this variant.  

### minSdk

```
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/8.0/com/android/build/api/variant/VariantBuilder#minSdk())and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdkPreview())setters. Only one of[minSdk](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdk())and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdkPreview())should be set.  

|                                                                                                                                         Returns                                                                                                                                          ||
|-------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`?` | the minimum supported SDK Version or null if[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdkPreview())was used to set it. |

### minSdkPreview

```
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/8.0/com/android/build/api/variant/VariantBuilder#minSdk())and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdkPreview())setters. Only one of[minSdk](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdk())and[minSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdkPreview())should be set.  

|                                                                                                                                     Returns                                                                                                                                      ||
|-------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`?` | the minimum supported SDK Version or null if[minSdk](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#minSdk())was used to set it. |

### renderscriptTargetApi

```
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  

|                                                             Returns                                                             ||
|----------------------------------------------------------------------------|-----------------------------------------------------|
| [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | the renderscript target api or -1 if not specified. |

### targetSdk

```
var targetSdk: Int?
```
| **This property is deprecated.**   
| Will be removed in v9.0

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/8.0/com/android/build/api/variant/VariantBuilder#targetSdk())and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview())setters. Only one of[targetSdk](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdk())and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview())should be set.

targetSdk is now managed by[GeneratesApkBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/GeneratesApkBuilder)instead of[VariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder).  

|                                                                                                                                       Returns                                                                                                                                       ||
|-------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`?` | the target SDK Version or null if[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview())was used to set it. |

### targetSdkPreview

```
var targetSdkPreview: String?
```
| **This property is deprecated.**   
| Will be removed in v9.0

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/8.0/com/android/build/api/variant/VariantBuilder#targetSdk())and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview())setters. Only one of[targetSdk](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdk())and[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview())should be set.

targetSdkPreview is now managed by[GeneratesApkBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/GeneratesApkBuilder)instead of[VariantBuilder](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder).  

|                                                                                                                                               Returns                                                                                                                                               ||
|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`?` | the target supported SDK Version or null if[targetSdkPreview](https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/variant/VariantBuilder#targetSdkPreview())was used to set it. |

### unitTestEnabled

```
var unitTestEnabled: Boolean
```
| **This property is deprecated.**   
| Use enableUnitTest

Set to`true`if the variant's has any unit tests, false otherwise. Value is Boolean#True by default.