# ApplicationVariant

# ApplicationVariant

```
@Incubating interface ApplicationVariant : Variant
```

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

Properties for the main Variant of an application.

## Summary

|                                                                                                                                                                                                                                                                                   ### Public methods                                                                                                                                                                                                                                                                                    ||
|--------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [aaptOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#aaptOptions(kotlin.Function1))`(`action:` `[AaptOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/AaptOptions).()` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Variant's aaptOptions, initialized by the corresponding global DSL element.                                |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [packagingOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#packagingOptions(kotlin.Function1))`(`action:` `[ApkPackagingOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApkPackagingOptions).()` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Variant's packagingOptions, initialized by the corresponding global DSL element. |
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [signingConfig](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#signingConfig(kotlin.Function1))`(`action:` `[SigningConfig](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/SigningConfig).()` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` Variant's signingConfig, initialized by the corresponding DSL element.                             |

| ### Inherited functions ||
|---|---|
| From class[Variant](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant) |------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [addBuildConfigField](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant#addBuildConfigField(kotlin.String,%20java.io.Serializable,%20kotlin.String))`(`key:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `value:` `[Serializable](http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)`, `comment:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?`)` <br /> Convenience method to add a new Build Config field which value is known at configuration time. <br />                                                                                                                                                         | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [addResValue](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant#addResValue(kotlin.String,%20kotlin.String,%20kotlin.String,%20kotlin.String))`(`name:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `type:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `value:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `comment:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?`)` <br /> Adds a ResValue element to the generated resources. <br />                                                                                                               | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [addResValue](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant#addResValue(kotlin.String,%20kotlin.String,%20org.gradle.api.provider.Provider,%20kotlin.String))`(`name:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `type:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`, `value:` `[Provider](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html)<[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)>`, `comment:` `[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?`)` <br /> Adds a ResValue element to the generated resources. <br /> | ||
| From class[Component](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/Component.html#) |------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [setAsmFramesComputationMode](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/Component.html#setAsmFramesComputationMode(com.android.build.api.instrumentation.FramesComputationMode))`(`mode:` `[FramesComputationMode](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/instrumentation/FramesComputationMode.html#)`)` <br /> Sets the frame computation mode that will be applied to the bytecode of the classes instrumented by ASM visitors registered through[transformClassesWith](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/Component.html#transformClassesWith(java.lang.Class,%20com.android.build.api.instrumentation.InstrumentationScope,%20kotlin.Function1)). The default mode is to[copy frames](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/instrumentation/FramesComputationMode.html#ENUM_VALUE:COPY_FRAMES). When setting this multiple times, the mode with the highest enum value will be selected. <br />                                                                                                                                                                                                                                                                                                                                                      | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [transformClassesWith](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/Component.html#transformClassesWith(java.lang.Class,%20com.android.build.api.instrumentation.InstrumentationScope,%20kotlin.Function1))`(`classVisitorFactoryImplClass:` `[Class](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html)<out` `[AsmClassVisitorFactory](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/instrumentation/AsmClassVisitorFactory.html#)<ParamT>>`, `scope:` `[InstrumentationScope](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/instrumentation/InstrumentationScope.html#)`, `instrumentationParamsConfig:` `(ParamT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` <br /> Registers an asm class visitor to instrument the classes defined by the given scope. An instance of the factory will be instantiated and used to create visitors for each class. Example: ```scdoc androidComponentsExtension.onVariants(selector().all(), { transformClassesWith(AsmClassVisitorFactoryImpl.class, InstrumentationScope.Project) { params -> params.x = "value" } setAsmFramesComputationMode(COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS) }) ``` This API is experimental and subject to breaking change and we strongly suggest you don't publish plugins that depend on it yet. <br /> | ||

|                                                                                                                                                                                                                                                    ### Properties                                                                                                                                                                                                                                                    ||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[AaptOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/AaptOptions)                                                                                                 | [aaptOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#aaptOptions:com.android.build.api.variant.AaptOptions) Variant's aaptOptions, initialized by the corresponding global DSL element.                        |
| abstract[Property](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Property.html)\<[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)\>                                         | [applicationId](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#applicationId:org.gradle.api.provider.Property) Variant's application ID as present in the final manifest file of the APK.                              |
| abstract[DependenciesInfo](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/DependenciesInfo)                                                                                       | [dependenciesInfo](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#dependenciesInfo:com.android.build.api.variant.DependenciesInfo) Specify whether to include SDK dependency information in APKs and Bundles.          |
| abstract[List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)\<[VariantOutput](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/VariantOutput)\> | [outputs](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#outputs:kotlin.collections.List) Returns the final list of variant outputs.                                                                                   |
| abstract[ApkPackagingOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApkPackagingOptions)                                                                                 | [packagingOptions](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#packagingOptions:com.android.build.api.variant.ApkPackagingOptions) Variant's packagingOptions, initialized by the corresponding global DSL element. |
| abstract[SigningConfig](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/SigningConfig)                                                                                             | [signingConfig](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/ApplicationVariant#signingConfig:com.android.build.api.variant.SigningConfig) Variant's signingConfig, initialized by the corresponding DSL element.                       |

| ### Inherited properties ||
|---|---|
| From class[Component](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/Component.html#) |--------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Artifacts](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/artifact/Artifacts.html#) | [artifacts](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/Component.html#artifacts:com.android.build.api.artifact.Artifacts) <br /> Access to the variant's buildable artifacts for build customization. <br /> | ||
| From class[Variant](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant) |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [MapProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/MapProperty.html)<[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html),` `[BuildConfigField](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/BuildConfigField)<out` `[Serializable](http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)>> | [buildConfigFields](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant#buildConfigFields:org.gradle.api.provider.MapProperty) <br /> Variant's[BuildConfigField](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/BuildConfigField)which will be generated in the BuildConfig class. <br />                                                                                                                                                     | | [MapProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/MapProperty.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)>                                                                                                                                          | [manifestPlaceholders](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant#manifestPlaceholders:org.gradle.api.provider.MapProperty) <br /> [MapProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/MapProperty.html)of the variant's manifest placeholders. Placeholders are organized with a key and a value. The value is a[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)that will be used as is in the merged manifest. <br /> | | [Provider](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html)<[String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)>                                                                                                                                                                                                                                    | [packageName](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/Variant#packageName:org.gradle.api.provider.Provider) <br /> The package name into which some classes are generated <br />                                                                                                                                                                                                                                                                                                       | ||
| From class[ComponentIdentity](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/ComponentIdentity.html#) |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)?                                                                                                                                                                                                                                                            | [buildType](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/ComponentIdentity.html#buildType:kotlin.String) <br /> Build type name, might be replaced with access to locked DSL object once ready. <br />                                                                                                                                                                                      | | [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)                                                                                                                                                                                                                                                             | [flavorName](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/component/ComponentIdentity.html#flavorName:kotlin.String) <br /> The multi-flavor name of the variant. This does not include the build type. If no flavors are present, this is an empty string. The full name of the variant is queried via[getName](https://docs.gradle.org/current/javadoc/org/gradle/api/Named.html#getName()). <br /> | | [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/4.2/com/android/build/api/component/ComponentIdentity.html#productFlavors:kotlin.collections.List) <br /> List of flavor names, might be replaced with access to locked DSL objects once ready. The order is properly sorted based on the associated dimension order. <br />                                                                                      | ||

## Public methods

### aaptOptions

```
abstract fun aaptOptions(action: AaptOptions.() -> Unit): Unit
```

Variant's aaptOptions, initialized by the corresponding global DSL element.  

### packagingOptions

```
abstract fun packagingOptions(action: ApkPackagingOptions.() -> Unit): Unit
```

Variant's packagingOptions, initialized by the corresponding global DSL element.  

### signingConfig

```
abstract fun signingConfig(action: SigningConfig.() -> Unit): Unit
```

Variant's signingConfig, initialized by the corresponding DSL element.

## Properties

### aaptOptions

```
abstract val aaptOptions: AaptOptions
```

Variant's aaptOptions, initialized by the corresponding global DSL element.  

### applicationId

```
abstract val applicationId: Property<String>
```

Variant's application ID as present in the final manifest file of the APK.  

### dependenciesInfo

```
abstract val dependenciesInfo: DependenciesInfo
```

Specify whether to include SDK dependency information in APKs and Bundles.  

### outputs

```
abstract val outputs: List<VariantOutput>
```

Returns the final list of variant outputs.

| Return ||
|---|---|
| read only list of[VariantOutput](https://developer.android.com/reference/tools/gradle-api/4.2/com/android/build/api/variant/VariantOutput)for this variant. ||

### packagingOptions

```
abstract val packagingOptions: ApkPackagingOptions
```

Variant's packagingOptions, initialized by the corresponding global DSL element.  

### signingConfig

```
abstract val signingConfig: SigningConfig
```

Variant's signingConfig, initialized by the corresponding DSL element.