| package com.android.build.gradle |
| |
| import com.android.build.api.dsl.TestBuildFeatures |
| import com.android.build.api.variant.TestVariant |
| import com.android.build.api.variant.TestVariantProperties |
| import com.android.build.gradle.api.AndroidSourceSet |
| import com.android.build.gradle.api.ApplicationVariant |
| import com.android.build.gradle.api.BaseVariant |
| import com.android.build.gradle.api.BaseVariantOutput |
| import com.android.build.gradle.api.ViewBindingOptions |
| import com.android.build.gradle.internal.CompileOptions |
| import com.android.build.gradle.internal.ExtraModelInfo |
| import com.android.build.gradle.internal.services.DslServices |
| import com.android.build.gradle.internal.coverage.JacocoOptions |
| import com.android.build.gradle.internal.dependency.SourceSetManager |
| import com.android.build.gradle.internal.dsl.AaptOptions |
| import com.android.build.gradle.internal.dsl.AbiSplitOptions |
| import com.android.build.gradle.internal.dsl.ActionableVariantObjectOperationsExecutor |
| import com.android.build.gradle.internal.dsl.AdbOptions |
| import com.android.build.gradle.internal.dsl.AnnotationProcessorOptions |
| import com.android.build.gradle.internal.dsl.BuildType |
| import com.android.build.gradle.internal.dsl.DataBindingOptions |
| import com.android.build.gradle.internal.dsl.CmakeOptions |
| import com.android.build.gradle.internal.dsl.DefaultConfig |
| import com.android.build.gradle.internal.dsl.DensitySplitOptions |
| import com.android.build.gradle.internal.dsl.ExternalNativeBuild |
| import com.android.build.gradle.internal.dsl.InternalTestExtension |
| import com.android.build.gradle.internal.dsl.LintOptions |
| import com.android.build.gradle.internal.dsl.NdkBuildOptions |
| import com.android.build.gradle.internal.dsl.PackagingOptions |
| import com.android.build.gradle.internal.dsl.ProductFlavor |
| import com.android.build.gradle.internal.dsl.SigningConfig |
| import com.android.build.gradle.internal.dsl.Splits |
| import com.android.build.gradle.internal.dsl.TestExtensionImpl |
| import com.android.build.gradle.internal.dsl.ViewBindingOptionsImpl |
| import com.android.build.gradle.internal.dsl.TestOptions |
| import com.android.build.gradle.internal.scope.GlobalScope |
| import com.android.builder.core.LibraryRequest |
| import com.android.repository.Revision |
| import org.gradle.api.Action |
| import org.gradle.api.DomainObjectSet |
| import org.gradle.api.NamedDomainObjectContainer |
| import org.gradle.api.internal.DefaultDomainObjectSet |
| |
| /** {@code android} extension for {@code com.android.test} projects. */ |
| open class TestExtension( |
| dslServices: DslServices, |
| globalScope: GlobalScope, |
| buildOutputs: NamedDomainObjectContainer<BaseVariantOutput>, |
| sourceSetManager: SourceSetManager, |
| extraModelInfo: ExtraModelInfo, |
| private val publicExtensionImpl: TestExtensionImpl |
| ) : BaseExtension( |
| dslServices, |
| globalScope, |
| buildOutputs, |
| sourceSetManager, |
| extraModelInfo, |
| false |
| ), TestAndroidConfig, |
| InternalTestExtension by publicExtensionImpl, |
| ActionableVariantObjectOperationsExecutor<TestVariant<TestVariantProperties>, TestVariantProperties> by publicExtensionImpl { |
| |
| private val applicationVariantList: DomainObjectSet<ApplicationVariant> = |
| dslServices.domainObjectSet(ApplicationVariant::class.java) |
| |
| override val viewBinding: ViewBindingOptions = |
| dslServices.newInstance( |
| ViewBindingOptionsImpl::class.java, |
| publicExtensionImpl.buildFeatures, |
| dslServices |
| ) |
| |
| // this is needed because the impl class needs this but the interface does not, |
| // so CommonExtension does not define it, which means, that even though it's part of |
| // TestExtensionImpl, the implementation by delegate does not bring it. |
| fun buildFeatures(action: Action<TestBuildFeatures>) { |
| publicExtensionImpl.buildFeatures(action) |
| } |
| |
| /** |
| * The list of Application variants. Since the collections is built after evaluation, it |
| * should be used with Gradle's `all` iterator to process future items. |
| */ |
| val applicationVariants: DefaultDomainObjectSet<ApplicationVariant> |
| get() = applicationVariantList as DefaultDomainObjectSet<ApplicationVariant> |
| |
| override fun addVariant(variant: BaseVariant) { |
| applicationVariantList.add(variant as ApplicationVariant) |
| } |
| |
| open fun targetProjectPath(targetProjectPath: String?) { |
| checkWritability() |
| publicExtensionImpl.targetProjectPath = targetProjectPath |
| } |
| |
| /** |
| * The variant of the tested project. |
| * |
| * Default is 'debug' |
| * |
| * @deprecated This is deprecated, test module can now test all flavors. |
| */ |
| override var targetVariant: String |
| get() = "" |
| set(value) = targetVariant(value) |
| |
| open fun targetVariant(targetVariant: String) { |
| checkWritability() |
| System.err.println("android.targetVariant is deprecated, all variants are now tested.") |
| } |
| |
| override val flavorDimensionList: MutableList<String> |
| get() = flavorDimensions |
| |
| override val buildToolsRevision: Revision |
| get() = Revision.parseRevision(buildToolsVersion, Revision.Precision.MICRO) |
| |
| override val libraryRequests: MutableCollection<LibraryRequest> |
| get() = publicExtensionImpl.libraryRequests |
| |
| override val testBuildType: String? |
| get() = null |
| |
| override var compileSdkVersion: String? |
| get() = publicExtensionImpl.compileSdkPreview |
| set(value) { |
| publicExtensionImpl.compileSdkPreview = value |
| } |
| } |