Component

interface Component : ComponentIdentity
AndroidTest

Properties for the android test Variant of a module.

AndroidTest

AndroidTest

AndroidTest

ApplicationVariant

Properties for the main Variant of an application.

DynamicFeatureVariant

LibraryVariant

Variant for Library projects

TestComponent

TestComponent

TestFixtures

TestFixtures

TestVariant

Variant for test-only modules.

UnitTest

UnitTest

Properties for the unit test variant of a module.

UnitTest

Properties for the unit test variant of a module.

UnitTest

Properties for the unit test variant of a module.

Variant

Parent interface for all types of variants.

Summary

Public methods

abstract Unit

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

abstract 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.

Properties

abstract Artifacts

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

Inherited properties

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 will return null

The full name of the variant is queried via name.

String name

Component's name.

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

setAsmFramesComputationMode

abstract fun setAsmFramesComputationMode(mode: FramesComputationMode): Unit

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.

transformClassesWith

abstract fun <ParamT : InstrumentationParameters> transformClassesWith(
    classVisitorFactoryImplClass: Class<out AsmClassVisitorFactory<ParamT>>,
    scope: InstrumentationScope,
    instrumentationParamsConfig: (ParamT) -> Unit
): 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.

Parameters
classVisitorFactoryImplClass: Class<out AsmClassVisitorFactory<ParamT>> the factory class implementing AsmClassVisitorFactory
scope: InstrumentationScope either instrumenting the classes of the current project or the project and its dependencies
instrumentationParamsConfig: (ParamT) -> Unit the configuration function to be applied to the instantiated InstrumentationParameters object before passed to AsmClassVisitorFactory.createClassVisitor.

Properties

artifacts

abstract val artifacts: Artifacts

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