# KotlinMultiplatformAndroidComponentsExtension

# KotlinMultiplatformAndroidComponentsExtension

<br />

```
@Incubating
public interface KotlinMultiplatformAndroidComponentsExtension extends DslLifecycle, AndroidComponents
```

<br />

*** ** * ** ***

Components extension for KMP Android Gradle Plugin related components.

## Summary

| ### Public methods |
|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract void`    | [onVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(org.gradle.api.Action))`(` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[KotlinMultiplatformAndroidVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidVariant)`> callback` `)` [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[onVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(kotlin.Function1))above.                                                                                                                                                                                                                                                                                                                                        |
| `abstract void`    | [onVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(kotlin.Function1))`(` ` @`[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)` `[KotlinMultiplatformAndroidVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidVariant)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> callback` `)` Allow for registration of a[callback](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(kotlin.Function1))to be called with variant instances of type[KotlinMultiplatformAndroidExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/KotlinMultiplatformAndroidExtension)once the list of[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/artifact/Artifact)has been determined. |

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ### Inherited methods                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| From[com.android.build.api.variant.AndroidComponents](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/AndroidComponents) |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[AndroidPluginVersion](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/AndroidPluginVersion) | [getPluginVersion](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/AndroidComponents#getPluginVersion())`()` The version of the Android Gradle Plugin currently in use.                     | | `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[SdkComponents](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/SdkComponents)           | [getSdkComponents](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/AndroidComponents#getSdkComponents())`()` Provides access to underlying Android SDK and build-tools components like adb. |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| From[com.android.build.api.variant.DslLifecycle](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/DslLifecycle) |-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `abstract void` | [finalizeDsl](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/DslLifecycle#finalizeDsl(org.gradle.api.Action))`(` ` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[KotlinMultiplatformAndroidExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/KotlinMultiplatformAndroidExtension)`> callback` `)` [Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[finalizeDsl](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/DslLifecycle#finalizeDsl(kotlin.Function1))above. | | `abstract void` | [finalizeDsl](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/DslLifecycle#finalizeDsl(kotlin.Function1))`(` ` @`[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)` `[KotlinMultiplatformAndroidExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/KotlinMultiplatformAndroidExtension)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> callback` `)` API to customize the DSL Objects programmatically after they have been evaluated from the build files and before used in the build process next steps like variant or tasks creation.                                                                 | |

## Public methods

### onVariant

```
abstract void onVariant(
    @NonNull Action<@NonNull KotlinMultiplatformAndroidVariant> callback
)
```

[Action](https://docs.gradle.org/current/javadoc/org/gradle/api/Action.html)based version of[onVariant](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(kotlin.Function1))above.  

### onVariant

```
abstract void onVariant(
    @NonNull Function1<@NonNull KotlinMultiplatformAndroidVariant, Unit> callback
)
```

Allow for registration of a[callback](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(kotlin.Function1))to be called with variant instances of type[KotlinMultiplatformAndroidExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/KotlinMultiplatformAndroidExtension)once the list of[com.android.build.api.artifact.Artifact](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/artifact/Artifact)has been determined.

At this stage, access to the DSL objects is disallowed

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/8.3/null/com/android/build/api/artifact/Artifacts)for details.

Code executing in the[callback](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/KotlinMultiplatformAndroidComponentsExtension#onVariant(kotlin.Function1))also has access to the[KotlinMultiplatformAndroidExtension](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/KotlinMultiplatformAndroidExtension)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.