diff options
author | Siva Velusamy <vsiva@google.com> | 2012-09-11 16:02:59 -0700 |
---|---|---|
committer | Siva Velusamy <vsiva@google.com> | 2012-09-11 16:02:59 -0700 |
commit | 190d3859a52a388ee52aee742a864f9df98e5b95 (patch) | |
tree | 2f07329ee7dc3091656835a110b94e00360290b2 | |
parent | 320ff2f436932d450647ad0969b6eb5c53360e29 (diff) | |
download | sdk-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.java | 34 |
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); |