AndroidComponentsExtension
interface AndroidComponentsExtension<DslExtensionT : CommonExtension<*, *, *, *>, VariantBuilderT : VariantBuilder, VariantT : Variant> : DslLifecycle
ApplicationAndroidComponentsExtension |
Extension for the Android Application Gradle Plugin components. |
DynamicFeatureAndroidComponentsExtension |
Extension for the Android Dynamic Feature Gradle Plugin components. |
LibraryAndroidComponentsExtension |
Extension for the Android Library Gradle Plugin components. |
TestAndroidComponentsExtension |
Extension for the Android Test Gradle Plugin components. |
Generic extension for Android Gradle Plugin related components.
Each component has a type, like application or library and will have a dedicated extension with methods that are related to the particular component type.
Parameters | |
---|---|
<DslExtensionT : CommonExtension<*, *, *, *>> |
the type of the DSL to be used in |
<VariantBuilderT : VariantBuilder> |
the |
<VariantT : Variant> |
the |
Summary
Public functions |
|
---|---|
Unit |
beforeVariants( Method to register a |
Unit |
beforeVariants(
|
Unit |
This function is deprecated. Replaced by finalizeDsl |
Unit |
onVariants(selector: VariantSelector, callback: (VariantT) -> Unit) Allow for registration of a |
Unit |
onVariants(selector: VariantSelector, callback: Action<VariantT>)
|
@Incubating Unit |
registerExtension( Register an Android Gradle Plugin DSL extension. |
@Incubating Unit |
registerSourceType(name: String) Register a new source type to all source sets. |
VariantSelector |
selector() Creates a |
Public properties |
|
---|---|
AndroidPluginVersion |
The version of the Android Gradle Plugin currently in use. |
SdkComponents |
Provides access to underlying Android SDK and build-tools components like adb. |
Inherited functions |
||||
---|---|---|---|---|
|
Public functions
beforeVariants
fun beforeVariants(
selector: VariantSelector = selector().all(),
callback: (VariantBuilderT) -> Unit
): 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")
}
}
Parameters | |
---|---|
selector: VariantSelector = selector().all() |
|
callback: (VariantBuilderT) -> Unit |
lambda to be called with each instance of |
beforeVariants
fun beforeVariants(
selector: VariantSelector = selector().all(),
callback: Action<VariantBuilderT>
): Unit
Action
based version of beforeVariants
above.
finalizeDSl
funfinalizeDSl(callback: Action<DslExtensionT>): Unit
Action
based version of finalizeDsl
above.
onVariants
fun onVariants(
selector: VariantSelector = selector().all(),
callback: (VariantT) -> Unit
): 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.Task
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
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.Task
s created by the Android Gradle Plugin use the updated value.
onVariants
fun onVariants(
selector: VariantSelector = selector().all(),
callback: Action<VariantT>
): Unit
Action
based version of onVariants
above.
registerExtension
@Incubating
fun registerExtension(
dslExtension: DslExtension,
configurator: (variantExtensionConfig: VariantExtensionConfig<VariantT>) -> VariantExtension
): Unit
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).
Parameters | |
---|---|
dslExtension: DslExtension |
the DSL extension configuration. |
configurator: (variantExtensionConfig: VariantExtensionConfig<VariantT>) -> VariantExtension |
a lambda to create a variant scoped object. The lambda is provided with the |
Returns | |
---|---|
Unit |
an sub type of |
registerSourceType
@Incubating
fun registerSourceType(name: String): Unit
Register a new source type to all source sets.
The name of the source type will be used to create expected directories names in the various source sets. For instance, src/main/
There is no notion of priorities between the build-type, flavor specific directories, all the expected directories will be interpreted as a flat namespace.
Therefore, any org.gradle.api.Task
that needs access to the entire list of source folders can just use the Sources.extras's Flat.all method for that source type.
However, If you need to have overriding priorities between the expected directories and therefore require a merging activity, you can still use this API but you will need to create a merging task that will have all sources in input and produce a single output folder for the merged sources.
Parameters | |
---|---|
name: String |
the name of the source type. |
selector
fun selector(): VariantSelector
Creates a VariantSelector
instance that can be configured to reduce the set of ComponentBuilder
instances participating in the beforeVariants
and onVariants
callback invocation.
Returns | |
---|---|
VariantSelector |
|
Public properties
pluginVersion
val pluginVersion: AndroidPluginVersion
The version of the Android Gradle Plugin currently in use.
sdkComponents
val sdkComponents: SdkComponents
Provides access to underlying Android SDK and build-tools components like adb.
Returns | |
---|---|
SdkComponents |
|