DynamicFeatureAndroidComponentsExtension
interface DynamicFeatureAndroidComponentsExtension : AndroidComponentsExtension<DynamicFeatureExtension, DynamicFeatureVariantBuilder, DynamicFeatureVariant>
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
Unit |
beforeVariants(selector: VariantSelector = selector().all(), callback: (VariantBuilderT) -> Unit)
Method to register a callback to be called with VariantBuilderT instances that
satisfies the selector. The callback will be called as soon as the VariantBuilderT
instance has been created but before any com.android.build.api.artifact.Artifact has been
determined, therefore the build flow can still be changed when the callback is invoked.
At this stage, access to the DSL objects is disallowed, use finalizeDsl method to
programmatically access the DSL objects before the VariantBuilderT object is built.
Example without selection:
androidComponents {
beforeVariants {
println("Called with variant : ${'$'}name")
}
}
Example with selection:
androidComponents {
val debug = selector().withBuildType("debug")
beforeVariants(debug) {
println("Called with variant : ${'$'}name")
}
}
|
Unit |
beforeVariants(selector: VariantSelector = selector().all(), callback: Action<VariantBuilderT>)
Action based version of beforeVariants above.
|
Unit |
finalizeDSl(callback: Action<DslExtensionT>)
Action based version of finalizeDsl above.
|
Unit |
finalizeDsl(callback: (DslExtensionT) -> Unit)
API to customize the DSL Objects programmatically before the beforeVariants is called.
Example of a build type creation:
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 or onVariants.
|
Unit |
onVariants(selector: VariantSelector = selector().all(), callback: (VariantT) -> Unit)
Allow for registration of a callback to be called with variant instances of type VariantT
once the list of com.android.build.api.artifact.Artifact 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.Tasks 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
for details.
Code executing in the callback also has access to the VariantT information which is used
to configure org.gradle.api.Task inputs (for example, the buildConfigFields). Such
information represented as org.gradle.api.provider.Property can still be modified ensuring
that all org.gradle.api.Tasks created by the Android Gradle Plugin use the updated value.
|
Unit |
onVariants(selector: VariantSelector = selector().all(), callback: Action<VariantT>)
Action based version of onVariants above.
|
Unit |
registerExtension(dslExtension: DslExtension, configurator: (variantExtensionConfig: VariantExtensionConfig<VariantT>) -> VariantExtension)
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
instance.
Variant Scoped objects should use org.gradle.api.provider.Property for its mutable
state to allow for late binding. (see com.android.build.api.variant.Variant for examples).
|
VariantSelector |
selector()
Creates a VariantSelector instance that can be configured
to reduce the set of ComponentBuilder instances participating in the beforeVariants
and onVariants callback invocation.
|
|
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2021-07-02 UTC.