blob: ed542bcc53a6550409abe2dd3dafccd59388fe05 [file] [log] [blame]
/*
* Copyright (C) 2016 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;
import android.databinding.tool.DataBindingBuilder;
import com.android.annotations.NonNull;
import com.android.build.api.transform.QualifiedContent;
import com.android.build.api.transform.QualifiedContent.ScopeType;
import com.android.build.gradle.AndroidConfig;
import com.android.build.gradle.internal.pipeline.TransformManager;
import com.android.build.gradle.internal.scope.GlobalScope;
import com.android.build.gradle.internal.scope.VariantScope;
import com.android.build.gradle.internal.tasks.InstantAppProvisionTask;
import com.android.build.gradle.internal.tasks.InstantAppSideLoadTask;
import com.android.build.gradle.internal.tasks.factory.TaskFactoryUtils;
import com.android.build.gradle.internal.variant.VariantFactory;
import com.android.build.gradle.options.ProjectOptions;
import com.android.build.gradle.tasks.BundleInstantApp;
import com.android.builder.errors.EvalIssueReporter;
import com.android.builder.profile.Recorder;
import java.io.File;
import java.util.Collection;
import java.util.Set;
import org.gradle.api.Project;
import org.gradle.api.tasks.TaskProvider;
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry;
/** TaskManager for creating tasks in an Android InstantApp project. */
public class InstantAppTaskManager extends TaskManager {
public InstantAppTaskManager(
@NonNull GlobalScope globalScope,
@NonNull Project project,
@NonNull ProjectOptions projectOptions,
@NonNull DataBindingBuilder dataBindingBuilder,
@NonNull AndroidConfig extension,
@NonNull VariantFactory variantFactory,
@NonNull ToolingModelBuilderRegistry toolingRegistry,
@NonNull Recorder threadRecorder) {
super(
globalScope,
project,
projectOptions,
dataBindingBuilder,
extension,
variantFactory,
toolingRegistry,
threadRecorder);
}
@Override
public void createTasksForVariantScope(@NonNull final VariantScope variantScope) {
// add a warning that the instantapp module is deprecated and will be removed in the future.
globalScope
.getErrorHandler()
.reportWarning(
EvalIssueReporter.Type.PLUGIN_OBSOLETE,
"The com.android.instantapp plugin is deprecated and will be removed by"
+ " the end of 2019. Please switch to using the Android App"
+ " Bundle to build your instant app. For more information on"
+ " migrating to Android App Bundles, please visit"
+ " https://developer.android.com/topic/google-play-instant/feature-module-migration");
// Create the bundling task.
File bundleDir = variantScope.getApkLocation();
TaskProvider<BundleInstantApp> bundleTask =
taskFactory.register(new BundleInstantApp.CreationAction(variantScope, bundleDir));
TaskFactoryUtils.dependsOn(variantScope.getTaskContainer().getAssembleTask(), bundleTask);
taskFactory.register(new InstantAppSideLoadTask.CreationAction(variantScope));
// FIXME: Stop creating a dummy task just to make the IDE sync shut up.
taskFactory.register(variantScope.getTaskName("dummy"));
}
@Override
public void createTasksBeforeEvaluate() {
super.createTasksBeforeEvaluate();
taskFactory.register(new InstantAppProvisionTask.CreationAction(globalScope));
}
@NonNull
@Override
protected Set<ScopeType> getJavaResMergingScopes(
@NonNull VariantScope variantScope, @NonNull QualifiedContent.ContentType contentType) {
return TransformManager.EMPTY_SCOPES;
}
@Override
protected void postJavacCreation(@NonNull VariantScope scope) {
// do nothing.
}
@Override
public void createGlobalLintTask() {
// do nothing.
}
@Override
public void configureGlobalLintTask(@NonNull Collection<VariantScope> variants) {
// do nothing.
}
}