/* * Copyright (C) 2012 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.ide.eclipse.adt.internal.launch; import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; import com.android.sdklib.internal.avd.AvdInfo; public class AvdCompatibility { public enum Compatibility { YES, NO, UNKNOWN, }; /** * Returns whether the specified AVD can run the given project that is built against * a particular SDK and has the specified minApiLevel. * @param avd AVD to check compatibility for * @param projectTarget project build target * @param minApiVersion project min api level * @return whether the given AVD can run the given application */ public static Compatibility canRun(AvdInfo avd, IAndroidTarget projectTarget, AndroidVersion minApiVersion) { if (avd == null) { return Compatibility.UNKNOWN; } IAndroidTarget avdTarget = avd.getTarget(); if (avdTarget == null) { return Compatibility.UNKNOWN; } // for platform targets, we only need to check the min api version if (projectTarget.isPlatform()) { return avdTarget.getVersion().canRun(minApiVersion) ? Compatibility.YES : Compatibility.NO; } // for add-on targets, delegate to the add on target to check for compatibility return projectTarget.canRunOn(avdTarget) ? Compatibility.YES : Compatibility.NO; } }