| /* |
| * 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.internal.api; |
| |
| import com.android.annotations.NonNull; |
| import com.android.annotations.Nullable; |
| import com.android.build.gradle.api.BaseVariant; |
| import com.android.build.gradle.api.BaseVariantOutput; |
| import com.android.build.gradle.api.GroupableProductFlavor; |
| import com.android.build.gradle.internal.variant.BaseVariantData; |
| 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.core.AndroidBuilder; |
| import com.android.builder.model.BuildType; |
| import com.android.builder.model.ProductFlavor; |
| import com.android.builder.model.SourceProvider; |
| import com.google.common.collect.Lists; |
| |
| import org.gradle.api.Task; |
| import org.gradle.api.tasks.Copy; |
| 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; |
| |
| /** |
| * Base class for variants. |
| * |
| * This is a wrapper around the internal data model, in order to control what is accessible |
| * through the external API. |
| */ |
| abstract class BaseVariantImpl implements BaseVariant { |
| |
| @NonNull |
| protected AndroidBuilder androidBuilder; |
| |
| @NonNull |
| protected ReadOnlyObjectProvider readOnlyObjectProvider; |
| |
| protected List<BaseVariantOutput> outputs = Lists.newArrayListWithExpectedSize(1); |
| |
| BaseVariantImpl( |
| @NonNull AndroidBuilder androidBuilder, |
| @NonNull ReadOnlyObjectProvider readOnlyObjectProvider) { |
| this.androidBuilder = androidBuilder; |
| this.readOnlyObjectProvider = readOnlyObjectProvider; |
| } |
| |
| @NonNull |
| protected abstract BaseVariantData<?> getVariantData(); |
| |
| public void addOutputs(@NonNull List<BaseVariantOutput> outputs) { |
| this.outputs.addAll(outputs); |
| } |
| |
| @Override |
| @NonNull |
| public String getName() { |
| return getVariantData().getVariantConfiguration().getFullName(); |
| } |
| |
| @Override |
| @NonNull |
| public String getDescription() { |
| return getVariantData().getDescription(); |
| } |
| |
| @Override |
| @NonNull |
| public String getDirName() { |
| return getVariantData().getVariantConfiguration().getDirName(); |
| } |
| |
| @Override |
| @NonNull |
| public String getBaseName() { |
| return getVariantData().getVariantConfiguration().getBaseName(); |
| } |
| |
| @NonNull |
| @Override |
| public String getFlavorName() { |
| return getVariantData().getVariantConfiguration().getFlavorName(); |
| } |
| |
| @NonNull |
| @Override |
| public List<BaseVariantOutput> getOutputs() { |
| return outputs; |
| } |
| |
| @Override |
| @NonNull |
| public BuildType getBuildType() { |
| return readOnlyObjectProvider.getBuildType( |
| getVariantData().getVariantConfiguration().getBuildType()); |
| } |
| |
| @Override |
| @NonNull |
| public List<GroupableProductFlavor> getProductFlavors() { |
| return new ImmutableFlavorList( |
| getVariantData().getVariantConfiguration().getProductFlavors(), |
| readOnlyObjectProvider); |
| } |
| |
| @Override |
| @NonNull |
| public ProductFlavor getMergedFlavor() { |
| return getVariantData().getVariantConfiguration().getMergedFlavor(); |
| } |
| |
| @NonNull |
| @Override |
| public List<SourceProvider> getSourceSets() { |
| return getVariantData().getVariantConfiguration().getSortedSourceProviders(); |
| } |
| |
| @Override |
| @NonNull |
| public String getApplicationId() { |
| return getVariantData().getApplicationId(); |
| } |
| |
| @Override |
| @NonNull |
| public Task getPreBuild() { |
| return getVariantData().preBuildTask; |
| } |
| |
| @Override |
| @NonNull |
| public Task getCheckManifest() { |
| return getVariantData().checkManifestTask; |
| } |
| |
| @Override |
| @NonNull |
| public AidlCompile getAidlCompile() { |
| return getVariantData().aidlCompileTask; |
| } |
| |
| @Override |
| @NonNull |
| public RenderscriptCompile getRenderscriptCompile() { |
| return getVariantData().renderscriptCompileTask; |
| } |
| |
| @Override |
| public MergeResources getMergeResources() { |
| return getVariantData().mergeResourcesTask; |
| } |
| |
| @Override |
| public MergeAssets getMergeAssets() { |
| return getVariantData().mergeAssetsTask; |
| } |
| |
| @Override |
| public GenerateBuildConfig getGenerateBuildConfig() { |
| return getVariantData().generateBuildConfigTask; |
| } |
| |
| @Override |
| @Nullable |
| public JavaCompile getJavaCompile() { |
| return getVariantData().javaCompileTask instanceof JavaCompile |
| ? (JavaCompile) getVariantData().javaCompileTask |
| : null; |
| } |
| |
| @NonNull |
| @Override |
| public AbstractCompile getJavaCompiler() { |
| return getVariantData().javaCompileTask; |
| } |
| |
| @NonNull |
| @Override |
| public NdkCompile getNdkCompile() { |
| return getVariantData().ndkCompileTask; |
| } |
| |
| @Nullable |
| @Override |
| public Task getObfuscation() { |
| return getVariantData().obfuscationTask; |
| } |
| |
| @Nullable |
| @Override |
| public File getMappingFile() { |
| return getVariantData().getMappingFile(); |
| } |
| |
| @Override |
| @NonNull |
| public Copy getProcessJavaResources() { |
| return getVariantData().processJavaResourcesTask; |
| } |
| |
| @Override |
| @Nullable |
| public Task getAssemble() { |
| return getVariantData().assembleVariantTask; |
| } |
| |
| @Override |
| public void addJavaSourceFoldersToModel(@NonNull File... generatedSourceFolders) { |
| getVariantData().addJavaSourceFoldersToModel(generatedSourceFolders); |
| } |
| |
| @Override |
| public void addJavaSourceFoldersToModel(@NonNull Collection<File> generatedSourceFolders) { |
| getVariantData().addJavaSourceFoldersToModel(generatedSourceFolders); |
| } |
| |
| @Override |
| public void registerJavaGeneratingTask(@NonNull Task task, @NonNull File... sourceFolders) { |
| getVariantData().registerJavaGeneratingTask(task, sourceFolders); |
| } |
| |
| @Override |
| public void registerJavaGeneratingTask(@NonNull Task task, @NonNull Collection<File> sourceFolders) { |
| getVariantData().registerJavaGeneratingTask(task, sourceFolders); |
| } |
| |
| @Override |
| public void registerResGeneratingTask(@NonNull Task task, @NonNull File... generatedResFolders) { |
| getVariantData().registerResGeneratingTask(task, generatedResFolders); |
| } |
| |
| @Override |
| public void registerResGeneratingTask(@NonNull Task task, @NonNull Collection<File> generatedResFolders) { |
| getVariantData().registerResGeneratingTask(task, generatedResFolders); |
| } |
| |
| @Override |
| public void buildConfigField(@NonNull String type, @NonNull String name, |
| @NonNull String value) { |
| getVariantData().getVariantConfiguration().addBuildConfigField(type, name, value); |
| } |
| |
| @Override |
| public void resValue(@NonNull String type, @NonNull String name, @NonNull String value) { |
| getVariantData().getVariantConfiguration().addResValue(type, name, value); |
| } |
| |
| @Override |
| public void setOutputsAreSigned(boolean isSigned) { |
| getVariantData().outputsAreSigned = isSigned; |
| } |
| |
| @Override |
| public boolean getOutputsAreSigned() { |
| return getVariantData().outputsAreSigned; |
| } |
| } |