| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.build.gradle.api; |
| |
| import com.android.annotations.NonNull; |
| import com.android.annotations.Nullable; |
| import com.android.build.gradle.tasks.AidlCompile; |
| import com.android.build.gradle.tasks.GenerateBuildConfig; |
| import com.android.build.gradle.tasks.MergeAssets; |
| import com.android.build.gradle.tasks.MergeResources; |
| import com.android.build.gradle.tasks.NdkCompile; |
| import com.android.build.gradle.tasks.RenderscriptCompile; |
| import com.android.builder.model.BuildType; |
| import com.android.builder.model.ProductFlavor; |
| import com.android.builder.model.SourceProvider; |
| |
| import org.gradle.api.Task; |
| import org.gradle.api.tasks.AbstractCopyTask; |
| import org.gradle.api.tasks.compile.AbstractCompile; |
| import org.gradle.api.tasks.compile.JavaCompile; |
| |
| import java.io.File; |
| import java.util.Collection; |
| import java.util.List; |
| |
| |
| /** |
| * A Build variant and all its public data. This is the base class for items common to apps, |
| * test apps, and libraries |
| */ |
| public interface BaseVariant { |
| |
| /** |
| * Returns the name of the variant. Guaranteed to be unique. |
| */ |
| @NonNull |
| String getName(); |
| |
| /** |
| * Returns a description for the build variant. |
| */ |
| @NonNull |
| String getDescription(); |
| |
| /** |
| * Returns a subfolder name for the variant. Guaranteed to be unique. |
| * |
| * This is usually a mix of build type and flavor(s) (if applicable). |
| * For instance this could be: |
| * "debug" |
| * "debug/myflavor" |
| * "release/Flavor1Flavor2" |
| */ |
| @NonNull |
| String getDirName(); |
| |
| /** |
| * Returns the base name for the output of the variant. Guaranteed to be unique. |
| */ |
| @NonNull |
| String getBaseName(); |
| |
| /** |
| * Returns the flavor name of the variant. This is a concatenation of all the |
| * applied flavors |
| * @return the name of the flavors, or an empty string if there is not flavors. |
| */ |
| @NonNull |
| String getFlavorName(); |
| |
| /** |
| * Returns the variant outputs. There should always be at least one output. |
| * @return a non-null list of variants. |
| */ |
| @NonNull |
| List<BaseVariantOutput> getOutputs(); |
| |
| /** |
| * Returns the {@link com.android.builder.core.DefaultBuildType} for this build variant. |
| */ |
| @NonNull |
| BuildType getBuildType(); |
| |
| /** |
| * Returns a {@link com.android.builder.core.DefaultProductFlavor} that represents the merging |
| * of the default config and the flavors of this build variant. |
| */ |
| @NonNull |
| ProductFlavor getMergedFlavor(); |
| |
| /** |
| * Returns the list of {@link com.android.builder.core.DefaultProductFlavor} for this build variant. |
| * |
| * This is always non-null but could be empty. |
| */ |
| @NonNull |
| List<ProductFlavor> getProductFlavors(); |
| |
| /** |
| * Returns a list of sorted SourceProvider in order of ascending order, meaning, the earlier |
| * items are meant to be overridden by later items. |
| * |
| * @return a list of source provider |
| */ |
| @NonNull |
| List<SourceProvider> getSourceSets(); |
| |
| /** |
| * Returns the applicationId of the variant. |
| */ |
| @NonNull |
| String getApplicationId(); |
| |
| /** |
| * Returns the pre-build anchor task |
| */ |
| @NonNull |
| Task getPreBuild(); |
| |
| /** |
| * Returns the check manifest task. |
| */ |
| @NonNull |
| Task getCheckManifest(); |
| |
| /** |
| * Returns the AIDL compilation task. |
| */ |
| @NonNull |
| AidlCompile getAidlCompile(); |
| |
| /** |
| * Returns the Renderscript compilation task. |
| */ |
| @NonNull |
| RenderscriptCompile getRenderscriptCompile(); |
| |
| /** |
| * Returns the resource merging task. |
| */ |
| @Nullable |
| MergeResources getMergeResources(); |
| |
| /** |
| * Returns the asset merging task. |
| */ |
| @Nullable |
| MergeAssets getMergeAssets(); |
| |
| /** |
| * Returns the BuildConfig generation task. |
| */ |
| @Nullable |
| GenerateBuildConfig getGenerateBuildConfig(); |
| |
| /** |
| * Returns the Java Compilation task if javac was configured to compile the source files. |
| * @deprecated prefer {@link #getJavaCompiler} which always return the java compiler task |
| * irrespective of which tool chain (javac or jack) used. |
| */ |
| @Nullable |
| @Deprecated |
| JavaCompile getJavaCompile() throws IllegalStateException; |
| |
| /** |
| * Returns the Java Compiler task which can be either javac or jack depending on the project |
| * configuration. |
| */ |
| @NonNull |
| AbstractCompile getJavaCompiler(); |
| |
| /** |
| * Returns the NDK Compilation task. |
| */ |
| @NonNull |
| NdkCompile getNdkCompile(); |
| |
| /** |
| * Returns the obfuscation task. This can be null if obfuscation is not enabled. |
| */ |
| @Nullable |
| Task getObfuscation(); |
| |
| /** |
| * Returns the obfuscation mapping file. This can be null if obfuscation is not enabled. |
| */ |
| @Nullable |
| File getMappingFile(); |
| |
| /** |
| * Returns the Java resource processing task. |
| */ |
| @NonNull |
| AbstractCopyTask getProcessJavaResources(); |
| |
| /** |
| * Returns the assemble task for all this variant's output |
| */ |
| @Nullable |
| Task getAssemble(); |
| |
| /** |
| * Adds new Java source folders to the model. |
| * |
| * These source folders will not be used for the default build |
| * system, but will be passed along the default Java source folders |
| * to whoever queries the model. |
| * |
| * @param sourceFolders the source folders where the generated source code is. |
| */ |
| void addJavaSourceFoldersToModel(@NonNull File... sourceFolders); |
| |
| /** |
| * Adds new Java source folders to the model. |
| * |
| * These source folders will not be used for the default build |
| * system, but will be passed along the default Java source folders |
| * to whoever queries the model. |
| * |
| * @param sourceFolders the source folders where the generated source code is. |
| */ |
| void addJavaSourceFoldersToModel(@NonNull Collection<File> sourceFolders); |
| |
| /** |
| * Adds to the variant a task that generates Java source code. |
| * |
| * This will make the generate[Variant]Sources task depend on this task and add the |
| * new source folders as compilation inputs. |
| * |
| * The new source folders are also added to the model. |
| * |
| * @param task the task |
| * @param sourceFolders the source folders where the generated source code is. |
| */ |
| void registerJavaGeneratingTask(@NonNull Task task, @NonNull File... sourceFolders); |
| |
| /** |
| * Adds to the variant a task that generates Java source code. |
| * |
| * This will make the generate[Variant]Sources task depend on this task and add the |
| * new source folders as compilation inputs. |
| * |
| * The new source folders are also added to the model. |
| * |
| * @param task the task |
| * @param sourceFolders the source folders where the generated source code is. |
| */ |
| void registerJavaGeneratingTask(@NonNull Task task, @NonNull Collection<File> sourceFolders); |
| |
| /** |
| * Adds to the variant a task that generates Resources. |
| * |
| * This will make the generate[Variant]Resources task depend on this task and add the |
| * new Resource folders as Resource merge inputs. |
| * |
| * The Resource folders are also added to the model. |
| * |
| * @param task the task |
| * @param resFolders the folders where the generated resources are. |
| */ |
| void registerResGeneratingTask(@NonNull Task task, @NonNull File... resFolders); |
| |
| /** |
| * Adds to the variant a task that generates Resources. |
| * |
| * This will make the generate[Variant]Resources task depend on this task and add the |
| * new Resource folders as Resource merge inputs. |
| * |
| * The Resource folders are also added to the model. |
| * |
| * @param task the task |
| * @param resFolders the folders where the generated resources are. |
| */ |
| void registerResGeneratingTask(@NonNull Task task, @NonNull Collection<File> resFolders); |
| |
| /** |
| * Adds a variant-specific BuildConfig field. |
| * @param type the type of the field |
| * @param name the name of the field |
| * @param value the value of the field |
| */ |
| void buildConfigField(@NonNull String type, @NonNull String name, @NonNull String value); |
| |
| /** |
| * Adds a variant-specific res value. |
| * @param type the type of the field |
| * @param name the name of the field |
| * @param value the value of the field |
| */ |
| void resValue(@NonNull String type, @NonNull String name, @NonNull String value); |
| |
| /** |
| * If true, variant outputs will be considered signed. Only set if you manually set the outputs |
| * to point to signed files built by other tasks. |
| */ |
| void setOutputsAreSigned(boolean isSigned); |
| |
| /** |
| * @see #setOutputsAreSigned(boolean) |
| */ |
| boolean getOutputsAreSigned(); |
| } |