aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSiva Velusamy <vsiva@google.com>2012-09-11 16:02:59 -0700
committerSiva Velusamy <vsiva@google.com>2012-09-11 16:02:59 -0700
commit190d3859a52a388ee52aee742a864f9df98e5b95 (patch)
tree2f07329ee7dc3091656835a110b94e00360290b2
parent320ff2f436932d450647ad0969b6eb5c53360e29 (diff)
downloadsdk-190d3859a52a388ee52aee742a864f9df98e5b95.zip
sdk-190d3859a52a388ee52aee742a864f9df98e5b95.tar.gz
sdk-190d3859a52a388ee52aee742a864f9df98e5b95.tar.bz2
Select AVD to run an app based on minSdkVersion
The list of AVD's capable of running a particular application should be determined based on the application's minSdkLevel rather than the current build target. Change-Id: Id6428652ebe0ceb8e1a81e90e2146f1aab44c975
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/EmulatorConfigTab.java34
1 files changed, 33 insertions, 1 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/EmulatorConfigTab.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/EmulatorConfigTab.java
index 22e5efa..855a7fa 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/EmulatorConfigTab.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/EmulatorConfigTab.java
@@ -18,17 +18,20 @@ package com.android.ide.eclipse.adt.internal.launch;
import com.android.ddmuilib.ImageLoader;
import com.android.ide.eclipse.adt.AdtPlugin;
+import com.android.ide.eclipse.adt.internal.editors.manifest.ManifestInfo;
import com.android.ide.eclipse.adt.internal.launch.AndroidLaunchConfiguration.TargetMode;
import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs;
import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
import com.android.ide.eclipse.adt.internal.sdk.AdtConsoleSdkLog;
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
import com.android.prefs.AndroidLocation.AndroidLocationException;
+import com.android.sdklib.AndroidVersion;
import com.android.sdklib.IAndroidTarget;
import com.android.sdklib.internal.avd.AvdInfo;
import com.android.sdklib.internal.avd.AvdManager;
import com.android.sdkuilib.internal.widgets.AvdSelector;
import com.android.sdkuilib.internal.widgets.AvdSelector.DisplayMode;
+import com.android.sdkuilib.internal.widgets.AvdSelector.IAvdFilter;
import com.android.utils.NullLogger;
import org.eclipse.core.resources.IProject;
@@ -98,6 +101,7 @@ public class EmulatorConfigTab extends AbstractLaunchConfigurationTab {
private Label mPreferredAvdLabel;
private IAndroidTarget mProjectTarget;
+ private AndroidVersion mProjectMinApiVersion;
private boolean mSupportMultiDeviceLaunch;
private Button mAllDevicesTargetButton;
@@ -365,8 +369,31 @@ public class EmulatorConfigTab extends AbstractLaunchConfigurationTab {
}
mPreferredAvdSelector.setManager(avdManager);
- mPreferredAvdSelector.setFilter(mProjectTarget);
mPreferredAvdSelector.refresh(false);
+
+ mPreferredAvdSelector.setFilter(new IAvdFilter() {
+ @Override
+ public void prepare() {
+ }
+
+ @Override
+ public void cleanup() {
+ }
+
+ @Override
+ public boolean accept(AvdInfo avd) {
+ IAndroidTarget avdTarget = avd.getTarget();
+ if (avdTarget == null) {
+ return true;
+ }
+
+ if (mProjectTarget.isPlatform()) {
+ return avdTarget.getVersion().canRun(mProjectMinApiVersion);
+ }
+
+ return mProjectTarget.canRunOn(avdTarget);
+ }
+ });
}
/* (non-Javadoc)
@@ -429,6 +456,11 @@ public class EmulatorConfigTab extends AbstractLaunchConfigurationTab {
// update the AVD list
if (project != null) {
mProjectTarget = Sdk.getCurrent().getTarget(project);
+
+ ManifestInfo mi = ManifestInfo.get(project);
+ final int minApiLevel = mi.getMinSdkVersion();
+ final String minApiCodeName = mi.getMinSdkCodeName();
+ mProjectMinApiVersion = new AndroidVersion(minApiLevel, minApiCodeName);
}
updateAvdList(avdManager);