Search in sources :

Example 1 with DeployTargetState

use of com.android.tools.idea.run.editor.DeployTargetState in project intellij by bazelbuild.

the class BlazeAndroidRunConfigurationRunner method getRunProfileState.

@Override
@Nullable
public final RunProfileState getRunProfileState(final Executor executor, ExecutionEnvironment env) throws ExecutionException {
    final AndroidFacet facet = AndroidFacet.getInstance(module);
    assert facet != null : "Enforced by fatal validation check in createRunner.";
    final Project project = env.getProject();
    runContext.augmentEnvironment(env);
    boolean isDebug = executor instanceof DefaultDebugExecutor;
    if (isDebug && !AndroidSdkUtils.activateDdmsIfNecessary(facet.getModule().getProject())) {
        throw new ExecutionException("Unable to obtain debug bridge. " + "Please check if there is a different tool using adb that is active.");
    }
    AndroidSessionInfo info = AndroidSessionInfo.findOldSession(project, null, runConfigId);
    BlazeAndroidDeviceSelector deviceSelector = runContext.getDeviceSelector();
    BlazeAndroidDeviceSelector.DeviceSession deviceSession = deviceSelector.getDevice(project, facet, deployTargetManager, executor, env, info, isDebug, runConfigId);
    if (deviceSession == null) {
        return null;
    }
    DeployTarget deployTarget = deviceSession.deployTarget;
    if (deployTarget != null && deployTarget.hasCustomRunProfileState(executor)) {
        DeployTargetState deployTargetState = deployTargetManager.getCurrentDeployTargetState();
        return deployTarget.getRunProfileState(executor, env, deployTargetState);
    }
    DeviceFutures deviceFutures = deviceSession.deviceFutures;
    if (deviceFutures == null) {
        // Quietly exit.
        return null;
    }
    if (deviceFutures.get().isEmpty()) {
        throw new ExecutionException(AndroidBundle.message("deployment.target.not.found"));
    }
    if (isDebug) {
        String error = canDebug(deviceFutures, facet, module.getName());
        if (error != null) {
            throw new ExecutionException(error);
        }
    }
    LaunchOptions.Builder launchOptionsBuilder = getDefaultLaunchOptions().setDebug(isDebug);
    runContext.augmentLaunchOptions(launchOptionsBuilder);
    // Store the run context on the execution environment so before-run tasks can access it.
    env.putCopyableUserData(RUN_CONTEXT_KEY, runContext);
    env.putCopyableUserData(DEVICE_SESSION_KEY, deviceSession);
    return new BlazeAndroidRunState(module, env, getName(), launchOptionsBuilder, isDebug, deviceSession, runContext);
}
Also used : AndroidSessionInfo(com.android.tools.idea.run.AndroidSessionInfo) DeviceFutures(com.android.tools.idea.run.DeviceFutures) AndroidFacet(org.jetbrains.android.facet.AndroidFacet) Project(com.intellij.openapi.project.Project) LaunchOptions(com.android.tools.idea.run.LaunchOptions) DefaultDebugExecutor(com.intellij.execution.executors.DefaultDebugExecutor) DeployTarget(com.android.tools.idea.run.editor.DeployTarget) DeployTargetState(com.android.tools.idea.run.editor.DeployTargetState) ExecutionException(com.intellij.execution.ExecutionException) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

AndroidSessionInfo (com.android.tools.idea.run.AndroidSessionInfo)1 DeviceFutures (com.android.tools.idea.run.DeviceFutures)1 LaunchOptions (com.android.tools.idea.run.LaunchOptions)1 DeployTarget (com.android.tools.idea.run.editor.DeployTarget)1 DeployTargetState (com.android.tools.idea.run.editor.DeployTargetState)1 ExecutionException (com.intellij.execution.ExecutionException)1 DefaultDebugExecutor (com.intellij.execution.executors.DefaultDebugExecutor)1 Project (com.intellij.openapi.project.Project)1 AndroidFacet (org.jetbrains.android.facet.AndroidFacet)1 Nullable (org.jetbrains.annotations.Nullable)1