LibraryPublishing

interface LibraryPublishing : Publishing<LibrarySingleVariant>
com.android.build.api.dsl.LibraryPublishing

Maven publishing DSL object for configuring options related to publishing AAR.

To publish just one variant, use singleVariant. The following sets up publishing of only the fullRelease variant of an android library.

android {
    // This project has four build variants: fullDebug, fullRelease, demoDebug, demoRelease
    flavorDimensions 'mode'
    productFlavors {
        full {}
        demo {}
    }

    publishing {
        // Publishes "fullRelease" build variant with "fullRelease" component created by
        // Android Gradle plugin
        singleVariant("fullRelease")
    }
}

afterEvaluate {
    publishing {
        publications {
            fullRelease(MavenPublication) {
                from components.fullRelease
                // ......
            }
        }
    }
}

To publish multiple variants, use multipleVariants. The following sets up publishing of both fullDebug and fullRelease variants of an android library.

android {
    publishing {
        // Published fullDebug and fullRelease build variants with "full" component created by
        // Android Gradle Plugin. The buildType attribute is added to published build variants.
        // As only a single flavor from "mode" dimension is included, no flavor attribute is
        // included.
        multipleVariants("full") {
            includeBuildTypeValues("debug", "release")
            includeFlavorDimensionAndValues("mode", "full")
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            full(MavenPublication) {
                from components.full
                // ......
            }
        }
    }
}

To publish all the build variants, you can use MultipleVariants.allVariants as a shortcut instead of filtering variants with MultipleVariants.includeBuildTypeValues and MultipleVariants.includeFlavorDimensionAndValues.

android {
    publishing {
        // Publishes all build variants with "default" component
        multipleVariants {
            allVariants()
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            allVariants(MavenPublication) {
                from components.default
                // ......
            }
        }
    }
}

This following code example shows how to create two publications one for demoRelease build variant, one for fullDebug &amp; fullRelease build variants.

android {
    publishing {
        // Publish "demoRelease" build variant with "demoRelease" component
        singleVariant("demoRelease")

        // Publish "fullDebug" and "fullRelease" build variants with "full" component
        multipleVariants("full") {
            includeBuildTypeValues("debug", "release")
            includeFlavorDimensionAndValues("mode", "full")
        }
    }
}

afterEvaluate {
    publishing {
        publications {
            // Creates two publications with different artifactIds
            full(MavenPublication) {
                from components.full
                groupId = 'com.example.MyLibrary'
                artifactId = 'final-full'
                version = '1.0'
            }
            demoRelease(MavenPublication) {
                from components.demoRelease
                groupId = 'com.example.MyLibrary'
                artifactId = 'final-demo'
                version = '1.0'
            }
        }
    }
}

The testFixtures component is published by default with its main variant. To disable publishing the testFixtures component, see the following example.

afterEvaluate {
    // Disable publishing test fixtures of release variant
    components.release.withVariantsFromConfiguration(
        configurations.releaseTestFixturesVariantReleaseApiPublication) { skip() }
    components.release.withVariantsFromConfiguration(
        configurations.releaseTestFixturesVariantReleaseRuntimePublication) { skip() }
}

Summary

Public methods

abstract Unit
multipleVariants(componentName: String, action: MultipleVariants.() -> Unit)

Publish multiple variants to a component.

abstract Unit

Publish multiple variants to the default component.

Inherited functions

Public methods

multipleVariants

abstract fun multipleVariants(
    componentName: String,
    action: MultipleVariants.() -> Unit
): Unit

Publish multiple variants to a component.

multipleVariants

abstract fun multipleVariants(action: MultipleVariants.() -> Unit): Unit

Publish multiple variants to the default component.