| /* |
| * 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.repository.Revision; |
| import com.android.sdklib.devices.Abi; |
| import com.android.sdklib.repositoryv2.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(); |
| |
| /** 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(); |
| |
| /** |
| * Returns the revision of this system image. |
| */ |
| @NonNull |
| Revision getRevision(); |
| |
| /** |
| * Returns the {@link AndroidVersion} of this system image. |
| */ |
| @NonNull |
| AndroidVersion getAndroidVersion(); |
| } |