Library Publication
By default a library only publishes its release variant. This variant
will be used by all projects referencing the library, no matter which
variant they build themselves. This is a temporary limitation due to
Gradle limitations that we are working towards removing.
You can control which variant gets published with
android { defaultPublishConfig "debug" }
Note that this publishing configuration name references the full
variant name. Release and debug are only applicable when there are no
flavors. If you wanted to change the default published variant while
using flavors, you would write:
android {defaultPublishConfig "flavor1Debug" }
It is also possible to publish all variants of a library. We are
planning to allow this while using a normal project-to-project
dependency (like shown above), but this is not possible right now due
to limitations in Gradle (we are working toward fixing those as well).
Publishing of all variants are not enabled by default. To enable them:
android {publishNonDefault true }
It is important to realize that publishing multiple variants means
publishing multiple aar files, instead of a single aar containing
multiple variants. Each aar packaging contains a single variant.
Publishing a variant means making this aar available as an output
artifact of the Gradle project. This can then be used either when
publishing to a maven repository, or when another project creates a
dependency on the library project.
Gradle has a concept of default" artifact. This is the one that is
used when writing:
compile project(':libraries:lib2')
To create a dependency on another published artifact, you need to
specify which one to use:
dependencies {
flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}
Important: Note that the published configuration is a full variant,
including the build type, and needs to be referenced as such.
Important: When enabling publishing of non-default, the Maven
publishing plugin will publish these additional variants as extra
packages (with classifier). This means that this is not really
compatible with publishing to a maven repository. You should either
publish a single variant to a repository OR enable all config
publishing for inter-project dependencies.