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.AndroidConfigpublic 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.AndroidConfigpublic org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.api.BaseVariantOutput> getBuildOutputs()
getBuildOutputs in interface com.android.build.gradle.AndroidConfigpublic 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.AndroidConfigpublic 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.AndroidConfigpublic 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.AndroidConfigpublic 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.AndroidConfigpublic org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.ProductFlavor> getProductFlavors()
getProductFlavors in interface com.android.build.gradle.AndroidConfigpublic org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.BuildType> getBuildTypes()
getBuildTypes in interface com.android.build.gradle.AndroidConfigpublic org.gradle.api.NamedDomainObjectContainer<com.android.build.gradle.internal.dsl.SigningConfig> getSigningConfigs()
getSigningConfigs in interface com.android.build.gradle.AndroidConfigpublic void defaultPublishConfig(java.lang.String value)
public java.lang.String getDefaultPublishConfig()
getDefaultPublishConfig in interface com.android.build.gradle.AndroidConfigpublic 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.AndroidConfigpublic com.android.build.gradle.internal.dsl.AdbOptions getAdbOptions()
getAdbOptions in interface com.android.build.gradle.AndroidConfigpublic java.lang.String getResourcePrefix()
getResourcePrefix in interface com.android.build.gradle.AndroidConfigpublic 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.AndroidConfigpublic 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.AndroidConfigpublic java.util.Collection<com.android.builder.core.LibraryRequest> getLibraryRequests()
getLibraryRequests in interface com.android.build.gradle.AndroidConfigpublic 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.AndroidConfigpublic com.android.build.gradle.internal.dsl.AaptOptions getAaptOptions()
getAaptOptions in interface com.android.build.gradle.AndroidConfigpublic com.android.build.gradle.internal.CompileOptions getCompileOptions()
getCompileOptions in interface com.android.build.gradle.AndroidConfigpublic 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.AndroidConfigpublic com.android.build.gradle.internal.dsl.LintOptions getLintOptions()
getLintOptions in interface com.android.build.gradle.AndroidConfigpublic com.android.build.gradle.internal.dsl.ExternalNativeBuild getExternalNativeBuild()
getExternalNativeBuild in interface com.android.build.gradle.AndroidConfigpublic com.android.build.gradle.internal.dsl.PackagingOptions getPackagingOptions()
getPackagingOptions in interface com.android.build.gradle.AndroidConfigpublic com.android.build.gradle.internal.dsl.Splits getSplits()
getSplits in interface com.android.build.gradle.AndroidConfigpublic com.android.build.gradle.internal.dsl.TestOptions getTestOptions()
getTestOptions in interface com.android.build.gradle.AndroidConfigpublic java.lang.Boolean getPackageBuildConfig()
getPackageBuildConfig in interface com.android.build.gradle.AndroidConfigpublic java.util.Collection<java.lang.String> getAidlPackageWhiteList()
getAidlPackageWhiteList in interface com.android.build.gradle.AndroidConfigpublic java.lang.Boolean getBaseFeature()
getBaseFeature in interface com.android.build.gradle.AndroidConfig