public abstract class BaseExtension
extends java.lang.Object
implements com.android.build.gradle.AndroidConfig
You don't use this plugin directly. Instead, use one of the following:
AppExtension
: outputs the com.android.application
plugin you use to create
an Android app module.
LibraryExtension
: outputs the com.android.library
plugin you use to create an Android
library module.
TestExtension
: outputs the com.android.test
plugin you use to create an
Android test module.
FeatureExtension
: outputs the com.android.feature
plugin you use to create
a feature module for your Android Instant
Apps.
The following applies the Android plugin to an app's module-level build.gradle
file:
// Applies the application plugin and makes the 'android' block available to specify // Android-specific build options. apply plugin: 'com.android.application'
To learn more about creating and organizing Android projects, read Projects Overview.
Modifier and Type | Field and Description |
---|---|
protected org.gradle.api.logging.Logger |
logger |
protected org.gradle.api.Project |
project |
Modifier and Type | Method and Description |
---|---|
void |
aaptOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.AaptOptions> action)
Specifies options for the Android Asset Packaging Tool (AAPT).
|
void |
adbOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.AdbOptions> action)
Specifies options for the Android Debug Bridge
(ADB), such as APK installation options.
|
abstract void |
addVariant(com.android.build.gradle.api.BaseVariant variant) |
void |
buildToolsVersion(java.lang.String version) |
void |
buildTypes(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.BuildType>> action)
Encapsulates all build type configurations for this project.
|
protected void |
checkWritability() |
void |
compileOptions(org.gradle.api.Action<com.android.build.gradle.internal.CompileOptions> action)
Specifies Java compiler options, such as the language level of the Java source code and
generated bytecode.
|
void |
compileSdkVersion(int apiLevel) |
void |
compileSdkVersion(java.lang.String version) |
void |
dataBinding(org.gradle.api.Action<com.android.build.gradle.internal.dsl.DataBindingOptions> action)
Specifies options for the Data Binding
Library.
|
void |
defaultConfig(org.gradle.api.Action<com.android.build.gradle.internal.dsl.DefaultConfig> action)
Specifies defaults for variant properties that the Android plugin applies to all build
variants.
|
void |
defaultPublishConfig(java.lang.String value) |
void |
deviceProvider(com.android.builder.testing.api.DeviceProvider deviceProvider) |
void |
dexOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.DexOptions> action)
Specifies options for the DEX tool, such as enabling library pre-dexing.
|
void |
disableWrite()
Disallow further modification on the extension.
|
void |
externalNativeBuild(org.gradle.api.Action<com.android.build.gradle.internal.dsl.ExternalNativeBuild> action)
|
void |
flavorDimensions(java.lang.String... dimensions)
Specifies the names of product flavor dimensions for this project.
|
void |
generatePureSplits(boolean flag) |
com.android.build.gradle.internal.dsl.AaptOptions |
getAaptOptions() |
java.io.File |
getAdbExe()
Deprecated.
|
java.io.File |
getAdbExecutable()
Returns a path to the Android Debug Bridge
(ADB) executable from the Android SDK.
|
com.android.build.gradle.internal.dsl.AdbOptions |
getAdbOptions() |
java.util.Collection<java.lang.String> |
getAidlPackageWhiteList() |
java.lang.Boolean |
getBaseFeature() |
java.util.List<java.io.File> |
getBootClasspath() |
org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.BaseVariantOutput> |
getBuildOutputs()
All build outputs for all variants, can be used by users to customize a build output.
|
com.android.repository.Revision |
getBuildToolsRevision() |
java.lang.String |
getBuildToolsVersion() |
org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.BuildType> |
getBuildTypes() |
com.android.build.gradle.internal.CompileOptions |
getCompileOptions() |
java.lang.String |
getCompileSdkVersion() |
com.android.build.gradle.internal.dsl.DataBindingOptions |
getDataBinding() |
com.android.build.gradle.internal.dsl.DefaultConfig |
getDefaultConfig() |
java.io.File |
getDefaultProguardFile(java.lang.String name) |
java.lang.String |
getDefaultPublishConfig() |
java.util.List<com.android.builder.testing.api.DeviceProvider> |
getDeviceProviders() |
com.android.build.gradle.internal.dsl.DexOptions |
getDexOptions() |
com.android.build.gradle.internal.dsl.ExternalNativeBuild |
getExternalNativeBuild() |
java.util.List<java.lang.String> |
getFlavorDimensionList() |
boolean |
getGeneratePureSplits() |
com.android.build.gradle.internal.coverage.JacocoOptions |
getJacoco()
Deprecated.
|
java.util.Collection<com.android.builder.core.LibraryRequest> |
getLibraryRequests() |
com.android.build.gradle.internal.dsl.LintOptions |
getLintOptions() |
java.io.File |
getNdkDirectory()
Returns the path to the Android
NDK that Gradle uses for this project.
|
java.lang.Boolean |
getPackageBuildConfig() |
com.android.build.gradle.internal.dsl.PackagingOptions |
getPackagingOptions() |
org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.ProductFlavor> |
getProductFlavors() |
java.lang.String |
getResourcePrefix() |
java.io.File |
getSdkDirectory()
Returns the path to the Android SDK that Gradle uses for this project.
|
org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.SigningConfig> |
getSigningConfigs() |
org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.AndroidSourceSet> |
getSourceSets() |
com.android.build.gradle.internal.dsl.Splits |
getSplits() |
com.android.build.gradle.internal.dsl.TestOptions |
getTestOptions() |
java.util.List<com.android.builder.testing.api.TestServer> |
getTestServers() |
java.util.List<com.android.build.api.transform.Transform> |
getTransforms() |
java.util.List<java.util.List<java.lang.Object>> |
getTransformsDependencies() |
org.gradle.api.Action<com.android.build.api.variant.VariantFilter> |
getVariantFilter() |
void |
jacoco(org.gradle.api.Action<com.android.build.gradle.internal.coverage.JacocoOptions> action)
Deprecated.
|
void |
lintOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.LintOptions> action)
Specifies options for the lint tool.
|
void |
packagingOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.PackagingOptions> action)
Specifies options and rules that determine which files the Android plugin packages into your
APK.
|
void |
productFlavors(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.ProductFlavor>> action)
Encapsulates all product flavors configurations for this project.
|
void |
registerArtifactType(java.lang.String name,
boolean isTest,
int artifactType) |
void |
registerBuildTypeSourceProvider(java.lang.String name,
com.android.build.gradle.internal.dsl.BuildType buildType,
com.android.builder.model.SourceProvider sourceProvider) |
void |
registerJavaArtifact(java.lang.String name,
com.android.build.gradle.api.BaseVariant variant,
java.lang.String assembleTaskName,
java.lang.String javaCompileTaskName,
java.util.Collection<java.io.File> generatedSourceFolders,
java.lang.Iterable<java.lang.String> ideSetupTaskNames,
org.gradle.api.artifacts.Configuration configuration,
java.io.File classesFolder,
java.io.File javaResourceFolder,
com.android.builder.model.SourceProvider sourceProvider) |
void |
registerMultiFlavorSourceProvider(java.lang.String name,
java.lang.String flavorName,
com.android.builder.model.SourceProvider sourceProvider) |
void |
registerProductFlavorSourceProvider(java.lang.String name,
com.android.build.gradle.internal.dsl.ProductFlavor productFlavor,
com.android.builder.model.SourceProvider sourceProvider) |
void |
registerTransform(com.android.build.api.transform.Transform transform,
java.lang.Object... dependencies) |
void |
resourcePrefix(java.lang.String prefix) |
void |
setBuildToolsVersion(java.lang.String version) |
void |
setCompileSdkVersion(int apiLevel) |
void |
setCompileSdkVersion(java.lang.String target) |
void |
setDefaultPublishConfig(java.lang.String value) |
void |
setGeneratePureSplits(boolean flag) |
void |
setPublishNonDefault(boolean publishNonDefault) |
void |
setVariantFilter(org.gradle.api.Action<com.android.build.api.variant.VariantFilter> filter) |
void |
signingConfigs(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.SigningConfig>> action)
Encapsulates signing configurations that you can apply to
BuildType and ProductFlavor configurations. |
void |
sourceSets(org.gradle.api.Action<org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.AndroidSourceSet>> action)
Encapsulates source set configurations for all variants.
|
void |
splits(org.gradle.api.Action<com.android.build.gradle.internal.dsl.Splits> action)
Specifies configurations for building multiple
APKs or APK splits.
|
void |
testOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.TestOptions> action)
Specifies options for how the Android plugin should run local and instrumented tests.
|
void |
testServer(com.android.builder.testing.api.TestServer testServer) |
void |
useLibrary(java.lang.String name)
Includes the specified library to the classpath.
|
void |
useLibrary(java.lang.String name,
boolean required)
/** Includes the specified library to the classpath.
|
void |
variantFilter(org.gradle.api.Action<com.android.build.api.variant.VariantFilter> filter) |
static com.android.builder.model.SourceProvider |
wrapJavaSourceSet(org.gradle.api.tasks.SourceSet sourceSet) |
protected org.gradle.api.logging.Logger logger
protected org.gradle.api.Project project
public void disableWrite()
protected void checkWritability()
public void compileSdkVersion(java.lang.String version)
getCompileSdkVersion()
public void compileSdkVersion(int apiLevel)
getCompileSdkVersion()
public void setCompileSdkVersion(int apiLevel)
public void setCompileSdkVersion(java.lang.String target)
public void useLibrary(java.lang.String name)
You typically use this property to support optional platform libraries that ship with the Android SDK. The following sample adds the Apache HTTP API library to the project classpath:
android { // Adds a platform library that ships with the Android SDK. useLibrary 'org.apache.http.legacy' }
To include libraries that do not ship with the SDK, such as local library modules or
binaries from remote repositories, add the libraries as
dependencies in the dependencies
block. Note that Android plugin 3.0.0 and
later introduce new
dependency configurations. To learn more about Gradle dependencies, read Dependency
Management Basics.
name
- the name of the library.public void useLibrary(java.lang.String name, boolean required)
You typically use this property to support optional platform libraries that ship with the Android SDK. The following sample adds the Apache HTTP API library to the project classpath:
android { // Adds a platform library that ships with the Android SDK. useLibrary 'org.apache.http.legacy' }
To include libraries that do not ship with the SDK, such as local library modules or
binaries from remote repositories, add the libraries as
dependencies in the dependencies
block. Note that Android plugin 3.0.0 and
later introduce new
dependency configurations. To learn more about Gradle dependencies, read Dependency
Management Basics.
name
- the name of the library.required
- if using the library requires a manifest entry, the entry will indicate that
the library is not required.public void buildToolsVersion(java.lang.String version)
public java.lang.String getBuildToolsVersion()
getBuildToolsVersion
in interface com.android.build.gradle.AndroidConfig
public void setBuildToolsVersion(java.lang.String version)
public void buildTypes(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.BuildType>> action)
For more information about the properties you can configure in this block, see BuildType
.
public void productFlavors(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.ProductFlavor>> action)
For more information about the properties you can configure in this block, see ProductFlavor
public void signingConfigs(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.SigningConfig>> action)
BuildType
and ProductFlavor
configurations.
For more information about the properties you can configure in this block, see SigningConfig
public void flavorDimensions(java.lang.String... dimensions)
When configuring product flavors with Android plugin 3.0.0 and higher, you must specify at
least one flavor dimension, using the
flavorDimensions
property, and then assign each flavor to a dimension.
Otherwise, you will get the following build error:
Error:All flavors must now belong to a named flavor dimension. The flavor 'flavor_name' is not assigned to a flavor dimension.
By default, when you specify only one dimension, all flavors you configure automatically belong to that dimension. If you specify more than one dimension, you need to manually assign each flavor to a dimension, as shown in the sample below.
Flavor dimensions allow you to create groups of product flavors that you can compine with flavors from other flavor dimensions. For example, you can have one dimension that includes a 'free' and 'paid' version of your app, and another dimension for flavors that support different API levels, such as 'minApi21' and 'minApi24'. The Android plugin can then combine flavors from these dimensions—including their settings, code, and resources—to create variants such as 'debugFreeMinApi21' and 'releasePaidMinApi24', and so on. The sample below shows you how to specify flavor dimensions and add product flavors to them.
android { ... // Specifies the flavor dimensions you want to use. The order in which you // list each dimension determines its priority, from highest to lowest, // when Gradle merges variant sources and configurations. You must assign // each product flavor you configure to one of the flavor dimensions. flavorDimensions 'api', 'version' productFlavors { demo { // Assigns this product flavor to the 'version' flavor dimension. dimension 'version' ... } full { dimension 'version' ... } minApi24 { // Assigns this flavor to the 'api' dimension. dimension 'api' minSdkVersion '24' versionNameSuffix "-minApi24" ... } minApi21 { dimension "api" minSdkVersion '21' versionNameSuffix "-minApi21" ... } } }
To learn more, read Combine multiple flavors.
public void sourceSets(org.gradle.api.Action<org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.AndroidSourceSet>> action)
Note that the Android plugin uses its own implementation of source sets. For more
information about the properties you can configure in this block, see AndroidSourceSet
.
public org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.AndroidSourceSet> getSourceSets()
getSourceSets
in interface com.android.build.gradle.AndroidConfig
public org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.BaseVariantOutput> getBuildOutputs()
getBuildOutputs
in interface com.android.build.gradle.AndroidConfig
public void defaultConfig(org.gradle.api.Action<com.android.build.gradle.internal.dsl.DefaultConfig> action)
You can override any defaultConfig
property when
configuring product flavors.
For more information about the properties you can configure in this block, see ProductFlavor
.
public void aaptOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.AaptOptions> action)
For more information about the properties you can configure in this block, see AaptOptions
.
public void dexOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.DexOptions> action)
For more information about the properties you can configure in this block, see DexOptions
.
public void lintOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.LintOptions> action)
For more information about the properties you can configure in this block, see LintOptions
.
public void externalNativeBuild(org.gradle.api.Action<com.android.build.gradle.internal.dsl.ExternalNativeBuild> action)
public void testOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.TestOptions> action)
For more information about the properties you can configure in this block, see TestOptions
.
public void compileOptions(org.gradle.api.Action<com.android.build.gradle.internal.CompileOptions> action)
For more information about the properties you can configure in this block, see CompileOptions
.
public void packagingOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.PackagingOptions> action)
For more information about the properties you can configure in this block, see PackagingOptions
.
@Deprecated public void jacoco(org.gradle.api.Action<com.android.build.gradle.internal.coverage.JacocoOptions> action)
To specify the version of JaCoCo you want to use, you now need to include it as a
buildscript dependency in your project-level build.gradle
file, as follows:
buildscript { dependencies { classpath "org.jacoco:org.jacoco.core:<jacoco-version>" ... } }
public void adbOptions(org.gradle.api.Action<com.android.build.gradle.internal.dsl.AdbOptions> action)
For more information about the properties you can configure in this block, see AdbOptions
.
public void splits(org.gradle.api.Action<com.android.build.gradle.internal.dsl.Splits> action)
For more information about the properties you can configure in this block, see Splits
.
public void dataBinding(org.gradle.api.Action<com.android.build.gradle.internal.dsl.DataBindingOptions> action)
For more information about the properties you can configure in this block, see DataBindingOptions
.
public com.android.build.gradle.internal.dsl.DataBindingOptions getDataBinding()
getDataBinding
in interface com.android.build.gradle.AndroidConfig
public void deviceProvider(com.android.builder.testing.api.DeviceProvider deviceProvider)
@NonNull public java.util.List<com.android.builder.testing.api.DeviceProvider> getDeviceProviders()
getDeviceProviders
in interface com.android.build.gradle.AndroidConfig
public void testServer(com.android.builder.testing.api.TestServer testServer)
@NonNull public java.util.List<com.android.builder.testing.api.TestServer> getTestServers()
getTestServers
in interface com.android.build.gradle.AndroidConfig
public void registerTransform(@NonNull com.android.build.api.transform.Transform transform, java.lang.Object... dependencies)
@NonNull public java.util.List<com.android.build.api.transform.Transform> getTransforms()
getTransforms
in interface com.android.build.gradle.AndroidConfig
@NonNull public java.util.List<java.util.List<java.lang.Object>> getTransformsDependencies()
getTransformsDependencies
in interface com.android.build.gradle.AndroidConfig
public org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.ProductFlavor> getProductFlavors()
getProductFlavors
in interface com.android.build.gradle.AndroidConfig
public org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.BuildType> getBuildTypes()
getBuildTypes
in interface com.android.build.gradle.AndroidConfig
public org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.SigningConfig> getSigningConfigs()
getSigningConfigs
in interface com.android.build.gradle.AndroidConfig
public void defaultPublishConfig(java.lang.String value)
public java.lang.String getDefaultPublishConfig()
getDefaultPublishConfig
in interface com.android.build.gradle.AndroidConfig
public void setDefaultPublishConfig(java.lang.String value)
public void setPublishNonDefault(boolean publishNonDefault)
public void variantFilter(org.gradle.api.Action<com.android.build.api.variant.VariantFilter> filter)
public void setVariantFilter(org.gradle.api.Action<com.android.build.api.variant.VariantFilter> filter)
public org.gradle.api.Action<com.android.build.api.variant.VariantFilter> getVariantFilter()
getVariantFilter
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.AdbOptions getAdbOptions()
getAdbOptions
in interface com.android.build.gradle.AndroidConfig
public java.lang.String getResourcePrefix()
getResourcePrefix
in interface com.android.build.gradle.AndroidConfig
public java.util.List<java.lang.String> getFlavorDimensionList()
getFlavorDimensionList
in interface com.android.build.gradle.AndroidConfig
@Incubating public boolean getGeneratePureSplits()
getGeneratePureSplits
in interface com.android.build.gradle.AndroidConfig
public void resourcePrefix(java.lang.String prefix)
public abstract void addVariant(com.android.build.gradle.api.BaseVariant variant)
public void registerArtifactType(@NonNull java.lang.String name, boolean isTest, int artifactType)
public void registerBuildTypeSourceProvider(@NonNull java.lang.String name, @NonNull com.android.build.gradle.internal.dsl.BuildType buildType, @NonNull com.android.builder.model.SourceProvider sourceProvider)
public void registerProductFlavorSourceProvider(@NonNull java.lang.String name, @NonNull com.android.build.gradle.internal.dsl.ProductFlavor productFlavor, @NonNull com.android.builder.model.SourceProvider sourceProvider)
public void registerJavaArtifact(@NonNull java.lang.String name, @NonNull com.android.build.gradle.api.BaseVariant variant, @NonNull java.lang.String assembleTaskName, @NonNull java.lang.String javaCompileTaskName, @NonNull java.util.Collection<java.io.File> generatedSourceFolders, @NonNull java.lang.Iterable<java.lang.String> ideSetupTaskNames, @NonNull org.gradle.api.artifacts.Configuration configuration, @NonNull java.io.File classesFolder, @NonNull java.io.File javaResourceFolder, @Nullable com.android.builder.model.SourceProvider sourceProvider)
public void registerMultiFlavorSourceProvider(@NonNull java.lang.String name, @NonNull java.lang.String flavorName, @NonNull com.android.builder.model.SourceProvider sourceProvider)
@NonNull public static com.android.builder.model.SourceProvider wrapJavaSourceSet(@NonNull org.gradle.api.tasks.SourceSet sourceSet)
public java.lang.String getCompileSdkVersion()
getCompileSdkVersion
in interface com.android.build.gradle.AndroidConfig
@Internal @NonNull public com.android.repository.Revision getBuildToolsRevision()
getBuildToolsRevision
in interface com.android.build.gradle.AndroidConfig
public java.util.Collection<com.android.builder.core.LibraryRequest> getLibraryRequests()
getLibraryRequests
in interface com.android.build.gradle.AndroidConfig
public java.io.File getSdkDirectory()
To learn more about downloading and installing the Android SDK, read Update Your Tools with the SDK Manager.
public java.io.File getNdkDirectory()
You can install the Android NDK by either using the SDK manager or downloading the standalone NDK package.
public java.util.List<java.io.File> getBootClasspath()
public java.io.File getAdbExecutable()
@Deprecated public java.io.File getAdbExe()
getAdbExecutable()
.public java.io.File getDefaultProguardFile(java.lang.String name)
public void generatePureSplits(boolean flag)
public void setGeneratePureSplits(boolean flag)
public com.android.build.gradle.internal.dsl.DefaultConfig getDefaultConfig()
getDefaultConfig
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.AaptOptions getAaptOptions()
getAaptOptions
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.CompileOptions getCompileOptions()
getCompileOptions
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.DexOptions getDexOptions()
getDexOptions
in interface com.android.build.gradle.AndroidConfig
@Deprecated public com.android.build.gradle.internal.coverage.JacocoOptions getJacoco()
getJacoco
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.LintOptions getLintOptions()
getLintOptions
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.ExternalNativeBuild getExternalNativeBuild()
getExternalNativeBuild
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.PackagingOptions getPackagingOptions()
getPackagingOptions
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.Splits getSplits()
getSplits
in interface com.android.build.gradle.AndroidConfig
public com.android.build.gradle.internal.dsl.TestOptions getTestOptions()
getTestOptions
in interface com.android.build.gradle.AndroidConfig
public java.lang.Boolean getPackageBuildConfig()
getPackageBuildConfig
in interface com.android.build.gradle.AndroidConfig
public java.util.Collection<java.lang.String> getAidlPackageWhiteList()
getAidlPackageWhiteList
in interface com.android.build.gradle.AndroidConfig
public java.lang.Boolean getBaseFeature()
getBaseFeature
in interface com.android.build.gradle.AndroidConfig