Variant

@Incubating interface Variant : Component
ApplicationVariant

Properties for the main Variant of an application.

DynamicFeatureVariant

LibraryVariant

Variant for Library projects

TestVariant

Variant for test-only modules.

Parent interface for all types of variants.

Summary

Public methods

abstract Unit
addBuildConfigField(key: String, value: Serializable, comment: String?)

Convenience method to add a new Build Config field which value is known at configuration time.

abstract Unit
addResValue(name: String, type: String, value: String, comment: String?)

Adds a ResValue element to the generated resources.

abstract Unit
addResValue(name: String, type: String, value: Provider<String>, comment: String?)

Adds a ResValue element to the generated resources.

Inherited functions

Unit setAsmFramesComputationMode(mode: FramesComputationMode)

Sets the frame computation mode that will be applied to the bytecode of the classes instrumented by ASM visitors registered through transformClassesWith. The default mode is to copy frames.

When setting this multiple times, the mode with the highest enum value will be selected.

Unit transformClassesWith(classVisitorFactoryImplClass: Class<out AsmClassVisitorFactory<ParamT>>, scope: InstrumentationScope, instrumentationParamsConfig: (ParamT) -> Unit)

Registers an asm class visitor to instrument the classes defined by the given scope. An instance of the factory will be instantiated and used to create visitors for each class.

Example:

androidComponentsExtension.onVariants(selector().all(), {
    transformClassesWith(AsmClassVisitorFactoryImpl.class,
                         InstrumentationScope.Project) { params ->
        params.x = "value"
    }
    setAsmFramesComputationMode(COMPUTE_FRAMES_FOR_INSTRUMENTED_METHODS)
})

This API is experimental and subject to breaking change and we strongly suggest you don't publish plugins that depend on it yet.

Properties

abstract Provider<String>

Variant's application ID as present in the final manifest file of the APK.

abstract MapProperty<String, BuildConfigField<out Serializable>>

Variant's BuildConfigField which will be generated in the BuildConfig class.

abstract MapProperty<String, String>

MapProperty of the variant's manifest placeholders.

abstract Provider<String>

The package name into which some classes are generated

abstract PackagingOptions

Variant's packagingOptions, initialized by the corresponding global DSL element.

Inherited properties

Artifacts artifacts

Access to the variant's buildable artifacts for build customization.

String? buildType

Build type name, might be replaced with access to locked DSL object once ready.

String flavorName

The multi-flavor name of the variant.

This does not include the build type. If no flavors are present, this is an empty string.

The full name of the variant is queried via getName.

List<Pair<String, String>> productFlavors

List of flavor names, might be replaced with access to locked DSL objects once ready.

The order is properly sorted based on the associated dimension order.

Public methods

addBuildConfigField

abstract fun addBuildConfigField(
    key: String,
    value: Serializable,
    comment: String?
): Unit

Convenience method to add a new Build Config field which value is known at configuration time.

Parameters
key: String the build config field name
value: Serializable the build config field value which type must be Serializable
comment: String? optional comment for the field.

addResValue

abstract fun addResValue(
    name: String,
    type: String,
    value: String,
    comment: String?
): Unit

Adds a ResValue element to the generated resources.

Parameters
name: String the resource name
type: String the resource type like 'string'
value: String the resource value
comment: String? optional comment to be added to the generated resource file for the field.

addResValue

abstract fun addResValue(
    name: String,
    type: String,
    value: Provider<String>,
    comment: String?
): Unit

Adds a ResValue element to the generated resources.

Parameters
name: String the resource name
type: String the resource type like 'string'
value: Provider<String> a Provider for the value
comment: String? optional comment to be added to the generated resource file for the field.

Properties

applicationId

abstract val applicationId: Provider<String>

Variant's application ID as present in the final manifest file of the APK.

Some type of variants allows this to be writeable but for some it's only read-only.

buildConfigFields

abstract val buildConfigFields: MapProperty<String, BuildConfigField<out Serializable>>

Variant's BuildConfigField which will be generated in the BuildConfig class.

manifestPlaceholders

abstract val manifestPlaceholders: MapProperty<String, String>

MapProperty of the variant's manifest placeholders.

Placeholders are organized with a key and a value. The value is a String that will be used as is in the merged manifest.

Return
the MapProperty with keys as String

packageName

abstract val packageName: Provider<String>

The package name into which some classes are generated

packagingOptions

abstract val packagingOptions: PackagingOptions

Variant's packagingOptions, initialized by the corresponding global DSL element.