# VariantDimension

# VariantDimension

<br />

```
public interface VariantDimension
```

<br />

Known direct subclasses  
[ApplicationVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationVariantDimension),[BaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/BaseFlavor),[BuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/BuildType),[DynamicFeatureVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureVariantDimension),[LibraryVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryVariantDimension),[TestVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestVariantDimension)  

|--------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ApplicationVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationVariantDimension)       | Shared properties between DSL objects that contribute to an application variant.                                                                                                                                                                                                             |
| [BaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/BaseFlavor)                                         | Shared properties between DSL objects[ProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ProductFlavor)and[DefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DefaultConfig) |
| [BuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/BuildType)                                           | Build types define certain properties that Gradle uses when building and packaging your app, and are typically configured for different stages of your development lifecycle.                                                                                                                |
| [DynamicFeatureVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureVariantDimension) | Shared properties between DSL objects that contribute to an dynamic feature variant.                                                                                                                                                                                                         |
| [LibraryVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryVariantDimension)               | Shared properties between DSL objects that contribute to a library variant.                                                                                                                                                                                                                  |
| [TestVariantDimension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestVariantDimension)                     | Shared properties between DSL objects that contribute to a separate-test-project variant.                                                                                                                                                                                                    |

Known indirect subclasses  
[ApplicationBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationBaseFlavor),[ApplicationBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationBuildType),[ApplicationDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationDefaultConfig),[ApplicationProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationProductFlavor),[DefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DefaultConfig),[DynamicFeatureBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureBaseFlavor),[DynamicFeatureBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureBuildType),[DynamicFeatureDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureDefaultConfig),[DynamicFeatureProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureProductFlavor),[LibraryBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryBaseFlavor),[LibraryBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryBuildType),[LibraryDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryDefaultConfig),[LibraryProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryProductFlavor),[ProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ProductFlavor),[TestBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestBaseFlavor),[TestBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestBuildType),[TestDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestDefaultConfig),[TestProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestProductFlavor)  

|--------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ApplicationBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationBaseFlavor)             |                                                                                                                                                                                                                                                                                                                   |
| [ApplicationBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationBuildType)               | Build types define certain properties that Gradle uses when building and packaging your app, and are typically configured for different stages of your development lifecycle.                                                                                                                                     |
| [ApplicationDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationDefaultConfig)       | Specifies defaults for properties that the Android application plugin applies to all build variants.                                                                                                                                                                                                              |
| [ApplicationProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ApplicationProductFlavor)       | Encapsulates all product flavors properties for application projects.                                                                                                                                                                                                                                             |
| [DefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DefaultConfig)                             | Specifies defaults for variant properties that the Android plugin applies to all build variants.                                                                                                                                                                                                                  |
| [DynamicFeatureBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureBaseFlavor)       | Shared properties between DSL objects[ProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ProductFlavor)and[DefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DefaultConfig)for dynamic features. |
| [DynamicFeatureBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureBuildType)         | Build types define certain properties that Gradle uses when building and packaging your app, and are typically configured for different stages of your development lifecycle.                                                                                                                                     |
| [DynamicFeatureDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureDefaultConfig) | Specifies defaults for properties that the Android dynamic-feature plugin applies to all build variants.                                                                                                                                                                                                          |
| [DynamicFeatureProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DynamicFeatureProductFlavor) | Encapsulates all product flavors properties for dynamic feature projects.                                                                                                                                                                                                                                         |
| [LibraryBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryBaseFlavor)                     |                                                                                                                                                                                                                                                                                                                   |
| [LibraryBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryBuildType)                       | Build types define certain properties that Gradle uses when building and packaging your library, and are typically configured for different stages of your development lifecycle.                                                                                                                                 |
| [LibraryDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryDefaultConfig)               | Specifies defaults for properties that the Android library plugin applies to all build variants.                                                                                                                                                                                                                  |
| [LibraryProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/LibraryProductFlavor)               | Encapsulates all product flavors properties for library projects.                                                                                                                                                                                                                                                 |
| [ProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ProductFlavor)                             | Encapsulates all product flavors properties for this project.                                                                                                                                                                                                                                                     |
| [TestBaseFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestBaseFlavor)                           |                                                                                                                                                                                                                                                                                                                   |
| [TestBuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestBuildType)                             | Build types define certain properties that Gradle uses when building and packaging your library, and are typically configured for different stages of your development lifecycle.                                                                                                                                 |
| [TestDefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestDefaultConfig)                     | Specifies defaults for properties that the Android test plugin applies to all build variants.                                                                                                                                                                                                                     |
| [TestProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/TestProductFlavor)                     | Encapsulates all product flavors properties for test projects.                                                                                                                                                                                                                                                    |

*** ** * ** ***

Shared properties between DSL objects that contribute to a variant.

That is,[BuildType](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/BuildType)and[ProductFlavor](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ProductFlavor)and[DefaultConfig](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/DefaultConfig).

## Summary

|                                                                                                                                                                                                                                                                                                           ### Public methods                                                                                                                                                                                                                                                                                                            |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [addManifestPlaceholders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#addManifestPlaceholders(kotlin.collections.Map))`(` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Map](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)`, @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`> manifestPlaceholders` `)` Adds manifest placeholders.                                                                                          |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [buildConfigField](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#buildConfigField(kotlin.String,kotlin.String,kotlin.String))`(` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` type,` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` name,` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` value` `)` Adds a new field to the generated BuildConfig class.                                                     |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | `@`[Incubating](https://docs.gradle.org/current/javadoc/org/gradle/api/Incubating.html) [externalNativeBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#externalNativeBuild(kotlin.Function1))`(` ` @`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[ExternalNativeBuildFlags](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuildFlags)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action` `)` Encapsulates per-variant CMake and ndk-build configurations for your external native build. |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[ExternalNativeBuildFlags](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuildFlags)                                                                                                                                                                                                                                                                                                                                                                 | `@`[Incubating](https://docs.gradle.org/current/javadoc/org/gradle/api/Incubating.html) [getExternalNativeBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getExternalNativeBuild())`()` Encapsulates per-variant CMake and ndk-build configurations for your external native build.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[JavaCompileOptions](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/JavaCompileOptions)                                                                                                                                                                                                                                                                                                                                                                             | [getJavaCompileOptions](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getJavaCompileOptions())`()` Options for configuring Java compilation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Map](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)`, @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`>` | [getManifestPlaceholders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getManifestPlaceholders())`()` The manifest placeholders.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `abstract `[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | [getMultiDexKeepFile](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getMultiDexKeepFile())`()` Text file that specifies additional classes that will be compiled into the main dex file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `abstract `[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | [getMultiDexKeepProguard](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getMultiDexKeepProguard())`()` Text file with additional ProGuard rules to be used to determine which classes are compiled into the main dex file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Ndk](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Ndk)                                                                                                                                                                                                                                                                                                                                                                                                           | [getNdk](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getNdk())`()` Encapsulates per-variant configurations for the NDK, such as ABI filters.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Optimization](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Optimization)                                                                                                                                                                                                                                                                                                                                                                                         | `@`[Incubating](https://docs.gradle.org/current/javadoc/org/gradle/api/Incubating.html) [getOptimization](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getOptimization())`()`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `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)` `[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)`>`                                                                                                                                                                                                                 | [getProguardFiles](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getProguardFiles())`()` Specifies the ProGuard configuration files that the plugin should use.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Shaders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Shaders)                                                                                                                                                                                                                                                                                                                                                                                                   | [getShaders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getShaders())`()` Options for configuring the shader compiler.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `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)` `[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)`>`                                                                                                                                                                                                                 | [getTestProguardFiles](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#getTestProguardFiles())`()` The collection of proguard rule files to be used when processing test code.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [javaCompileOptions](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#javaCompileOptions(kotlin.Function1))`(` ` @`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[JavaCompileOptions](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/JavaCompileOptions)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action` `)` Options for configuring Java compilation.                                                                                                                                                         |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [ndk](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#ndk(kotlin.Function1))`(@`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Ndk](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Ndk)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action)` Encapsulates per-variant configurations for the NDK, such as ABI filters.                                                                                                                                                                                            |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | `@`[Incubating](https://docs.gradle.org/current/javadoc/org/gradle/api/Incubating.html) [optimization](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#optimization(kotlin.Function1))`(` ` @`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Optimization](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Optimization)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action` `)`                                                                                                                                   |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)                                                                                                                                                                                                                                                                                                                                                                                                                     | [proguardFile](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#proguardFile(kotlin.Any))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)` proguardFile)` Adds a new ProGuard configuration file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)                                                                                                                                                                                                                                                                                                                                                                                                                     | [proguardFiles](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#proguardFiles(kotlin.Array))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)` files)` Adds new ProGuard configuration files.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [resValue](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#resValue(kotlin.String,kotlin.String,kotlin.String))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` type, @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` name, @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` value)` Adds a new generated resource.                                                                                                        |
| `abstract `[Void](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Void.html)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | ~~[setManifestPlaceholders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#setManifestPlaceholders(kotlin.collections.Map))~~`(` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Map](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)`, @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`> manifestPlaceholders` `)` **This method is deprecated.**Use manifestPlaceholders property instead                                          |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [setMultiDexKeepFile](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#setMultiDexKeepFile(java.io.File))`(`[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)` multiDexKeepFile)` Text file that specifies additional classes that will be compiled into the main dex file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [setMultiDexKeepProguard](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#setMultiDexKeepProguard(java.io.File))`(`[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)` multiDexKeepProguard)` Text file with additional ProGuard rules to be used to determine which classes are compiled into the main dex file.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)                                                                                                                                                                                                                                                                                                                                                                                                                     | [setProguardFiles](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#setProguardFiles(kotlin.collections.Iterable))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Iterable](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Iterable.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` ?> proguardFileIterable)` Replaces the ProGuard configuration files.                                                                                                                                                                                                                                                                                                                                                                                          |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [shaders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#shaders(kotlin.Function1))`(` ` @`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Shaders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Shaders)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action` `)` Configure the shader compiler options.                                                                                                                                                                                                        |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)                                                                                                                                                                                                                                                                                                                                                                                                                     | [testProguardFile](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#testProguardFile(kotlin.Any))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)` proguardFile)` Adds a proguard rule file to be used when processing test code.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)                                                                                                                                                                                                                                                                                                                                                                                                                     | [testProguardFiles](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#testProguardFiles(kotlin.Array))`(@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)` proguardFiles)` Adds proguard rule files to be used when processing test code.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

## Public methods

### addManifestPlaceholders

```
abstract void addManifestPlaceholders(
    @NonNull Map<@NonNull String, @NonNull Object> manifestPlaceholders
)
```

Adds manifest placeholders.

See[Inject Build Variables into the Manifest](https://developer.android.com/studio/build/manifest-build-variables.html).  

### buildConfigField

```
abstract void buildConfigField(
    @NonNull String type,
    @NonNull String name,
    @NonNull String value
)
```

Adds a new field to the generated BuildConfig class.

The field is generated as:`<type> <name> = <value>;`

This means each of these must have valid Java content. If the type is a String, then the value should include quotes.  

|                                                                                                     Parameters                                                                                                     |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` type`  | the type of the field  |
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` name`  | the name of the field  |
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` value` | the value of the field |

### externalNativeBuild

```
@Incubating
abstract void externalNativeBuild(
    @ExtensionFunctionType @NonNull Function1<@NonNull ExternalNativeBuildFlags, Unit> action
)
```

Encapsulates per-variant CMake and ndk-build configurations for your external native build.

To learn more, see[Add C and C++ Code to Your Project](http://developer.android.com/studio/projects/add-native-code.html#).  

### getExternalNativeBuild

```
@Incubating
abstract @NonNull ExternalNativeBuildFlags getExternalNativeBuild()
```

Encapsulates per-variant CMake and ndk-build configurations for your external native build.

To learn more, see[Add C and C++ Code to Your Project](http://developer.android.com/studio/projects/add-native-code.html#).  

### getJavaCompileOptions

```
abstract @NonNull JavaCompileOptions getJavaCompileOptions()
```

Options for configuring Java compilation.  

### getManifestPlaceholders

```
abstract @NonNull Map<@NonNull String, @NonNull Object> getManifestPlaceholders()
```

The manifest placeholders.

See[Inject Build Variables into the Manifest](https://developer.android.com/studio/build/manifest-build-variables.html).  

### getMultiDexKeepFile

```
abstract File getMultiDexKeepFile()
```

Text file that specifies additional classes that will be compiled into the main dex file.

Classes specified in the file are appended to the main dex classes computed using`aapt`.

If set, the file should contain one class per line, in the following format:`com/example/MyClass.class`  

### getMultiDexKeepProguard

```
abstract File getMultiDexKeepProguard()
```

Text file with additional ProGuard rules to be used to determine which classes are compiled into the main dex file.

If set, rules from this file are used in combination with the default rules used by the build system.  

### getNdk

```
abstract @NonNull Ndk getNdk()
```

Encapsulates per-variant configurations for the NDK, such as ABI filters.  

### getOptimization

```
@Incubating
abstract @NonNull Optimization getOptimization()
```  

### getProguardFiles

```
abstract @NonNull List<@NonNull File> getProguardFiles()
```

Specifies the ProGuard configuration files that the plugin should use.

There are two ProGuard rules files that ship with the Android plugin and are used by default:

- proguard-android.txt

- proguard-android-optimize.txt

`proguard-android-optimize.txt`is identical to`proguard-android.txt`, except with optimizations enabled. You can use getDefaultProguardFile(String) to return the full path of the files.  

|                                                                                                                                                                                                    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)` `[File](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html)`>` | a non-null collection of files. |

### getShaders

```
abstract @NonNull Shaders getShaders()
```

Options for configuring the shader compiler.  

### getTestProguardFiles

```
abstract @NonNull List<@NonNull File> getTestProguardFiles()
```

The collection of proguard rule files to be used when processing test code.

Test code needs to be processed to apply the same obfuscation as was done to main code.  

### javaCompileOptions

```
abstract void javaCompileOptions(
    @ExtensionFunctionType @NonNull Function1<@NonNull JavaCompileOptions, Unit> action
)
```

Options for configuring Java compilation.  

### ndk

```
abstract void ndk(@ExtensionFunctionType @NonNull Function1<@NonNull Ndk, Unit> action)
```

Encapsulates per-variant configurations for the NDK, such as ABI filters.  

### optimization

```
@Incubating
abstract void optimization(
    @ExtensionFunctionType @NonNull Function1<@NonNull Optimization, Unit> action
)
```  

### proguardFile

```
abstract @NonNull Object proguardFile(@NonNull Object proguardFile)
```

Adds a new ProGuard configuration file.

`proguardFile getDefaultProguardFile('proguard-android.txt')`

There are two ProGuard rules files that ship with the Android plugin and are used by default:

- proguard-android.txt

- proguard-android-optimize.txt

`proguard-android-optimize.txt`is identical to`proguard-android.txt`, except with optimizations enabled. You can use getDefaultProguardFile(String) to return the full path of the files.

This method has a return value for legacy reasons.  

### proguardFiles

```
abstract @NonNull Object proguardFiles(@NonNull Object files)
```

Adds new ProGuard configuration files.

There are two ProGuard rules files that ship with the Android plugin and are used by default:

- proguard-android.txt

- proguard-android-optimize.txt

`proguard-android-optimize.txt`is identical to`proguard-android.txt`, except with optimizations enabled. You can use getDefaultProguardFile(String) to return the full path of the files.

This method has a return value for legacy reasons.  

### resValue

```
abstract void resValue(@NonNull String type, @NonNull String name, @NonNull String value)
```

Adds a new generated resource.

This is equivalent to specifying a resource in res/values.

See[Resource Types](http://developer.android.com/guide/topics/resources/available-resources.html).  

|                                                                                                     Parameters                                                                                                     |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` type`  | the type of the resource  |
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` name`  | the name of the resource  |
| `@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)` value` | the value of the resource |

### setManifestPlaceholders

```
abstract Void [setManifestPlaceholders](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/VariantDimension#setManifestPlaceholders(kotlin.collections.Map))(
    @NonNull Map<@NonNull String, @NonNull Object> manifestPlaceholders
)
```
| **This method is deprecated.**   
Use manifestPlaceholders property instead  

### setMultiDexKeepFile

```
abstract void setMultiDexKeepFile(File multiDexKeepFile)
```

Text file that specifies additional classes that will be compiled into the main dex file.

Classes specified in the file are appended to the main dex classes computed using`aapt`.

If set, the file should contain one class per line, in the following format:`com/example/MyClass.class`  

### setMultiDexKeepProguard

```
abstract void setMultiDexKeepProguard(File multiDexKeepProguard)
```

Text file with additional ProGuard rules to be used to determine which classes are compiled into the main dex file.

If set, rules from this file are used in combination with the default rules used by the build system.  

### setProguardFiles

```
abstract @NonNull Object setProguardFiles(@NonNull Iterable<@NonNull ?> proguardFileIterable)
```

Replaces the ProGuard configuration files.

This method has a return value for legacy reasons.  

### shaders

```
abstract void shaders(
    @ExtensionFunctionType @NonNull Function1<@NonNull Shaders, Unit> action
)
```

Configure the shader compiler options.  

### testProguardFile

```
abstract @NonNull Object testProguardFile(@NonNull Object proguardFile)
```

Adds a proguard rule file to be used when processing test code.

Test code needs to be processed to apply the same obfuscation as was done to main code.

This method has a return value for legacy reasons.  

### testProguardFiles

```
abstract @NonNull Object testProguardFiles(@NonNull Object proguardFiles)
```

Adds proguard rule files to be used when processing test code.

Test code needs to be processed to apply the same obfuscation as was done to main code.

This method has a return value for legacy reasons.