blob: b39a9081993ab517f7df1f94531424c4497aa34a [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 com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.sdklib.devices.Abi;
import com.android.sdklib.repository.descriptors.IdDisplay;
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. */
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_LEGACY_FOLDER,
/**
* 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_IMAGES_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 up to Tools R22.6.
* Supported for add-ons as of Tools R22.8.
*/
IN_SYSTEM_IMAGE,
}
/** Returns the actual location of an installed system image. */
@NonNull
File getLocation();
/** Indicates the location strategy for this system image in the SDK. */
@NonNull
LocationType getLocationType();
/** Returns the tag of the system image. */
@NonNull
IdDisplay getTag();
/** Returns the vendor for an add-on's system image, or null for a platform system-image. */
@Nullable
IdDisplay getAddonVendor();
/**
* Returns the ABI type.
* See {@link Abi} for a full list.
* Cannot be null nor empty.
*/
@NonNull
String getAbiType();
/**
* Returns the skins embedded in the system image. <br/>
* Only supported by system images using {@link LocationType#IN_SYSTEM_IMAGE}. <br/>
* The skins listed here are merged in the {@link IAndroidTarget#getSkins()} list.
* @return A non-null skin list, possibly empty.
*/
@NonNull
File[] getSkins();
}