# DynamicFeatureAndroidComponentsExtension

# DynamicFeatureAndroidComponentsExtension

```
interface DynamicFeatureAndroidComponentsExtension : AndroidComponentsExtension<DynamicFeatureExtension, DynamicFeatureVariantBuilder, DynamicFeatureVariant>
```

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

Extension for Dynamic Feature module variant.

A dynamic feature module is created when a build script is applying the 'com.android.dynamic-feature' plugin.

## Summary

| ### Inherited functions ||
|---|---|
| From class[AndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension) |-------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantSelector)` `=` selector().all(), `callback:` `(VariantBuilderT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` <br /> Method to register a[callback](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#com.android.build.api.variant.AndroidComponentsExtension$beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1((com.android.build.api.variant.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)to be called with VariantBuilderT instances that satisfies the[selector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#com.android.build.api.variant.AndroidComponentsExtension$beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1((com.android.build.api.variant.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/selector). The[callback](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#com.android.build.api.variant.AndroidComponentsExtension$beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1((com.android.build.api.variant.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)will be called as soon as the VariantBuilderT instance has been created but before any[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/artifact/Artifact.html#)has been determined, therefore the build flow can still be changed when the[callback](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#com.android.build.api.variant.AndroidComponentsExtension$beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1((com.android.build.api.variant.AndroidComponentsExtension.VariantBuilderT,%20kotlin.Unit)))/callback)is invoked. At this stage, access to the DSL objects is disallowed, use[finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#finalizeDsl(kotlin.Function1))method to programmatically access the DSL objects before the VariantBuilderT object is built. Example without selection: ```gdscript androidComponents { beforeVariants { println("Called with variant : ${'$'}name") } } ``` Example with selection: ```gdscript androidComponents { val debug = selector().withBuildType("debug") beforeVariants(debug) { println("Called with variant : ${'$'}name") } } ``` <br /> | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#beforeVariants(com.android.build.api.variant.VariantSelector,%20org.gradle.api.Action))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantSelector)` `=` selector().all(), `callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<VariantBuilderT>`)` <br /> [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))above. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [finalizeDSl](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#finalizeDSl(org.gradle.api.Action))`(`callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<DslExtensionT>`)` <br /> [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#finalizeDsl(kotlin.Function1))above. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [finalizeDsl](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#finalizeDsl(kotlin.Function1))`(`callback:` `(DslExtensionT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` <br /> API to customize the DSL Objects programmatically before the[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))is called. Example of a build type creation: ```text androidComponents.finalizeDsl { extension -> extension.buildTypes.create("extra") } ``` The list of variants will be finalized after all finalizeDsl Callbacks and cannot be altered in the other APIs like[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))or[onVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#onVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1)). <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [onVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#onVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantSelector)` `=` selector().all(), `callback:` `(VariantT)` `->` `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`)` <br /> Allow for registration of a[callback](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#com.android.build.api.variant.AndroidComponentsExtension$onVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1((com.android.build.api.variant.AndroidComponentsExtension.VariantT,%20kotlin.Unit)))/callback)to be called with variant instances of type VariantT once the list of[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/artifact/Artifact.html#)has been determined. At this stage, access to the DSL objects is disallowed and access to the VariantBuilderT instance is limited to read-only access. Because the list of artifacts (including private ones) is final, one cannot change the build flow anymore as[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)s are now expecting those artifacts as inputs. However users can modify such artifacts by replacing or transforming them, see[com.android.build.api.artifact.Artifacts](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/artifact/Artifacts.html#)for details. Code executing in the[callback](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#com.android.build.api.variant.AndroidComponentsExtension$onVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1((com.android.build.api.variant.AndroidComponentsExtension.VariantT,%20kotlin.Unit)))/callback)also has access to the VariantT information which is used to configure[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)inputs (for example, the buildConfigFields). Such information represented as[org.gradle.api.provider.Property](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Property.html)can still be modified ensuring that all[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)s created by the Android Gradle Plugin use the updated value. <br />                                                                                                                                                                                                                                                                                                                                                                                 | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [onVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#onVariants(com.android.build.api.variant.VariantSelector,%20org.gradle.api.Action))`(`selector:` `[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantSelector)` `=` selector().all(), `callback:` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)<VariantT>`)` <br /> [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[onVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#onVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))above. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)                                                  | [registerExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#registerExtension(com.android.build.api.variant.DslExtension,%20kotlin.Function1))`(`dslExtension:` `[DslExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/DslExtension)`, `configurator:` `(variantExtensionConfig:` `[VariantExtensionConfig](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtensionConfig)<VariantT>)` `->` `[VariantExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantExtension)`)` <br /> Register an Android Gradle Plugin DSL extension. Please see Gradle documentation first at : https://docs.gradle.org/current/userguide/custom_plugins.html#sec:getting_input_from_the_build A lambda must be provided to create and configure the variant scoped object that will be stored with the Android Gradle Plugin[com.android.build.api.variant.Variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/Variant)instance. Variant Scoped objects should use[org.gradle.api.provider.Property](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Property.html)for its mutable state to allow for late binding. (see[com.android.build.api.variant.Variant](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/Variant)for examples). <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | | [VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantSelector) | [selector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#selector())`()` <br /> Creates a[VariantSelector](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/VariantSelector)instance that can be configured to reduce the set of[ComponentBuilder](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/ComponentBuilder)instances participating in the[beforeVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#beforeVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))and[onVariants](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#onVariants(com.android.build.api.variant.VariantSelector,%20kotlin.Function1))callback invocation. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | ||

| ### Inherited properties ||
|---|---|
| From class[AndroidComponentsExtension](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension) |---------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [AndroidPluginVersion](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/AndroidPluginVersion.html#) | [pluginVersion](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#pluginVersion:com.android.build.api.AndroidPluginVersion) <br /> The version of the Android Gradle Plugin currently in use. <br />                  | | [SdkComponents](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/SdkComponents.html#)           | [sdkComponents](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/AndroidComponentsExtension#sdkComponents:com.android.build.api.dsl.SdkComponents) <br /> Provides access to underlying Android SDK and build-tools components like adb. <br /> | ||