blob: 7a69030504b24f313800491649f507c24c5c446f [file] [log] [blame]
/*
* Copyright (C) 2011 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.sdklib;
import com.android.SdkConstants;
import java.io.File;
/**
* Describes a system image as used by an {@link IAndroidTarget}.
* A system image has an installation path, a location type and an ABI type.
*/
public interface ISystemImage extends Comparable<ISystemImage> {
/** Indicates the type of location for the system image folder in the SDK. */
public enum LocationType {
/**
* The system image is located in the legacy platform's {@link SdkConstants#FD_IMAGES}
* folder.
* <p/>
* Used by both platform and add-ons.
*/
IN_PLATFORM_LEGACY,
/**
* The system image is located in a sub-directory of the platform's
* {@link SdkConstants#FD_IMAGES} folder, allowing for multiple system
* images within the platform.
* <p/>
* Used by both platform and add-ons.
*/
IN_PLATFORM_SUBFOLDER,
/**
* The system image is located in the new SDK's {@link SdkConstants#FD_SYSTEM_IMAGES}
* folder. Supported as of Tools R14 and Repository XSD version 5.
* <p/>
* Used <em>only</em> by both platform. This is not supported for add-ons yet.
*/
IN_SYSTEM_IMAGE,
}
/** Returns the actual location of an installed system image. */
public abstract File getLocation();
/** Indicates the location strategy for this system image in the SDK. */
public abstract LocationType getLocationType();
/**
* Returns the ABI type. For example, one of {@link SdkConstants#ABI_ARMEABI},
* {@link SdkConstants#ABI_ARMEABI_V7A}, {@link SdkConstants#ABI_INTEL_ATOM} or
* {@link SdkConstants#ABI_MIPS}.
* Cannot be null nor empty.
*/
public abstract String getAbiType();
}