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);
}
Aggregations