Search in sources :

Example 1 with AndroidTargetManager

use of com.android.sdklib.repository.targets.AndroidTargetManager in project android by JetBrains.

the class FormFactorApiComboBox method deriveValues.

/**
   * Fill in the values that can be derived from the selected min SDK level:
   *
   * minApiLevel will be set to the selected api level (string or number)
   * minApi will be set to the numerical equivalent
   * buildApi will be set to the highest installed platform, or to the preview platform if a preview is selected
   * buildApiString will be set to the corresponding string
   * targetApi will be set to the highest installed platform or to the preview platform if a preview is selected
   * targetApiString will be set to the corresponding string
   *
   * @param stateStore
   * @param modified
   */
public void deriveValues(@NotNull ScopedStateStore stateStore, @NotNull Set<Key> modified) {
    if (modified.contains(myTargetComboBoxKey) || modified.contains(myInclusionKey)) {
        // First remove the last request, no need to install more than one platform
        if (!myInstallRequests.isEmpty()) {
            for (String request : myInstallRequests) {
                stateStore.listRemove(INSTALL_REQUESTS_KEY, request);
            }
            myInstallRequests.clear();
        }
        // If this form factor is not included then there is nothing to do:
        AndroidTargetComboBoxItem targetItem = stateStore.get(myTargetComboBoxKey);
        if (targetItem == null || !stateStore.getNotNull(myInclusionKey, false)) {
            return;
        }
        stateStore.put(FormFactorUtils.getMinApiKey(myFormFactor), targetItem.getData());
        stateStore.put(FormFactorUtils.getMinApiLevelKey(myFormFactor), targetItem.myApiLevel);
        IAndroidTarget target = targetItem.target;
        if (target != null && (target.getVersion().isPreview() || !target.isPlatform())) {
            // Make sure we set target and build to the preview version as well
            populateApiLevels(targetItem.myApiLevel, target, stateStore);
        } else {
            int targetApiLevel;
            if (ourHighestInstalledApiTarget != null) {
                targetApiLevel = ourHighestInstalledApiTarget.getVersion().getFeatureLevel();
            } else {
                targetApiLevel = 0;
            }
            populateApiLevels(targetApiLevel, ourHighestInstalledApiTarget, stateStore);
        }
        AndroidVersion androidVersion = targetItem.myAndroidVersion;
        String platformPath = DetailsTypes.getPlatformPath(androidVersion);
        // Update build tools: use preview versions with preview platforms, etc
        BuildToolInfo buildTool = (target == null) ? null : target.getBuildToolInfo();
        if (buildTool == null) {
            final AndroidSdkHandler sdkHandler = AndroidSdks.getInstance().tryToChooseSdkHandler();
            buildTool = sdkHandler.getLatestBuildTool(new StudioLoggerProgressIndicator(ConfigureAndroidProjectPath.class), false);
        }
        if (buildTool != null) {
            stateStore.put(WizardConstants.BUILD_TOOLS_VERSION_KEY, buildTool.getRevision().toString());
        }
        // Check to see if this is installed. If not, request that we install it
        if (targetItem.myAddon != null) {
            // The user selected a non platform SDK (e.g. for Google Glass). Let us install it:
            String packagePath = targetItem.myAddon.getPath();
            stateStore.listPush(INSTALL_REQUESTS_KEY, packagePath);
            myInstallRequests.add(packagePath);
            // We also need the platform if not already installed:
            AndroidTargetManager targetManager = AndroidSdks.getInstance().tryToChooseSdkHandler().getAndroidTargetManager(REPO_LOG);
            if (targetManager.getTargetFromHashString(AndroidTargetHash.getPlatformHashString(androidVersion), REPO_LOG) == null) {
                stateStore.listPush(INSTALL_REQUESTS_KEY, platformPath);
                myInstallRequests.add(platformPath);
            }
            // The selected minVersion should also be the buildApi:
            populateApiLevels(targetItem.myApiLevel, null, stateStore);
        } else if (target == null) {
            // unlikely, so this logic can wait for a followup CL.
            if (ourHighestInstalledApiTarget == null || (androidVersion.getApiLevel() > ourHighestInstalledApiTarget.getVersion().getApiLevel() && !ourInstalledVersions.contains(androidVersion))) {
                // Let us install the HIGHEST_KNOWN_STABLE_API.
                platformPath = DetailsTypes.getPlatformPath(new AndroidVersion(SdkVersionInfo.HIGHEST_KNOWN_STABLE_API, null));
                stateStore.listPush(INSTALL_REQUESTS_KEY, platformPath);
                myInstallRequests.add(platformPath);
                // HIGHEST_KNOWN_STABLE_API would also be the highest sdkVersion after this install, so specify buildApi again here:
                populateApiLevels(SdkVersionInfo.HIGHEST_KNOWN_STABLE_API, null, stateStore);
            }
        }
        PropertiesComponent.getInstance().setValue(getPropertiesComponentMinSdkKey(myFormFactor), targetItem.getData());
        // Check Java language level; should be 7 for L; eventually this will be automatically defaulted by the Android Gradle plugin
        // instead: https://code.google.com/p/android/issues/detail?id=76252
        String javaVersion = null;
        if (ourHighestInstalledApiTarget != null && ourHighestInstalledApiTarget.getVersion().getFeatureLevel() >= 21) {
            AndroidSdkData sdkData = AndroidSdks.getInstance().tryToChooseAndroidSdk();
            if (sdkData != null) {
                JavaSdk jdk = JavaSdk.getInstance();
                Sdk sdk = ProjectJdkTable.getInstance().findMostRecentSdkOfType(jdk);
                if (sdk != null) {
                    JavaSdkVersion version = jdk.getVersion(sdk);
                    if (version != null && version.isAtLeast(JavaSdkVersion.JDK_1_7)) {
                        javaVersion = JavaSdkVersion.JDK_1_7.getDescription();
                    }
                }
            }
        }
        stateStore.put(FormFactorUtils.getLanguageLevelKey(myFormFactor), javaVersion);
    }
}
Also used : JavaSdkVersion(com.intellij.openapi.projectRoots.JavaSdkVersion) AndroidTargetManager(com.android.sdklib.repository.targets.AndroidTargetManager) JavaSdk(com.intellij.openapi.projectRoots.JavaSdk) AndroidSdkHandler(com.android.sdklib.repository.AndroidSdkHandler) StudioLoggerProgressIndicator(com.android.tools.idea.sdk.progress.StudioLoggerProgressIndicator) AndroidSdkData(org.jetbrains.android.sdk.AndroidSdkData) JavaSdk(com.intellij.openapi.projectRoots.JavaSdk) Sdk(com.intellij.openapi.projectRoots.Sdk)

Example 2 with AndroidTargetManager

use of com.android.sdklib.repository.targets.AndroidTargetManager in project android by JetBrains.

the class AndroidVersionsInfo method getInstallRequestPaths.

@NotNull
public Collection<String> getInstallRequestPaths(@NotNull VersionItem... versionItems) {
    Set<String> res = Sets.newHashSet();
    for (VersionItem versionItem : versionItems) {
        AndroidVersion androidVersion = versionItem.myAndroidVersion;
        String platformPath = DetailsTypes.getPlatformPath(androidVersion);
        // Check to see if this is installed. If not, request that we install it
        if (versionItem.myAddon != null) {
            // The user selected a non platform SDK (e.g. for Google Glass). Let us install it:
            res.add(versionItem.myAddon.getPath());
            // We also need the platform if not already installed:
            AndroidTargetManager targetManager = AndroidSdks.getInstance().tryToChooseSdkHandler().getAndroidTargetManager(REPO_LOG);
            if (targetManager.getTargetFromHashString(AndroidTargetHash.getPlatformHashString(androidVersion), REPO_LOG) == null) {
                res.add(platformPath);
            }
        } else {
            // unlikely, so this logic can wait for a followup CL.
            if (myHighestInstalledApiTarget == null || (androidVersion.getApiLevel() > myHighestInstalledApiTarget.getVersion().getApiLevel() && !myInstalledVersions.contains(androidVersion))) {
                // Let us install the HIGHEST_KNOWN_STABLE_API.
                res.add(DetailsTypes.getPlatformPath(new AndroidVersion(SdkVersionInfo.HIGHEST_KNOWN_STABLE_API, null)));
            }
        }
    }
    return res;
}
Also used : AndroidTargetManager(com.android.sdklib.repository.targets.AndroidTargetManager) AndroidVersion(com.android.sdklib.AndroidVersion) NotNull(org.jetbrains.annotations.NotNull)

Example 3 with AndroidTargetManager

use of com.android.sdklib.repository.targets.AndroidTargetManager in project android by JetBrains.

the class AndroidVersionsInfo method getCompilationTargets.

/**
   * @return a list of android compilation targets (platforms and add-on SDKs)
   */
@NotNull
private static IAndroidTarget[] getCompilationTargets() {
    AndroidTargetManager targetManager = AndroidSdks.getInstance().tryToChooseSdkHandler().getAndroidTargetManager(REPO_LOG);
    List<IAndroidTarget> result = Lists.newArrayList();
    for (IAndroidTarget target : targetManager.getTargets(REPO_LOG)) {
        if (target.isPlatform()) {
            result.add(target);
        }
    }
    return result.toArray(new IAndroidTarget[result.size()]);
}
Also used : AndroidTargetManager(com.android.sdklib.repository.targets.AndroidTargetManager) IAndroidTarget(com.android.sdklib.IAndroidTarget) NotNull(org.jetbrains.annotations.NotNull)

Example 4 with AndroidTargetManager

use of com.android.sdklib.repository.targets.AndroidTargetManager in project android by JetBrains.

the class FormFactorApiComboBox method getCompilationTargets.

/**
   * @return a list of android compilation targets (platforms and add-on SDKs)
   */
@NotNull
private static IAndroidTarget[] getCompilationTargets() {
    AndroidTargetManager targetManager = AndroidSdks.getInstance().tryToChooseSdkHandler().getAndroidTargetManager(REPO_LOG);
    List<IAndroidTarget> result = Lists.newArrayList();
    for (IAndroidTarget target : targetManager.getTargets(REPO_LOG)) {
        if (target.isPlatform()) {
            result.add(target);
        }
    }
    return result.toArray(new IAndroidTarget[result.size()]);
}
Also used : AndroidTargetManager(com.android.sdklib.repository.targets.AndroidTargetManager) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

AndroidTargetManager (com.android.sdklib.repository.targets.AndroidTargetManager)4 NotNull (org.jetbrains.annotations.NotNull)3 AndroidVersion (com.android.sdklib.AndroidVersion)1 IAndroidTarget (com.android.sdklib.IAndroidTarget)1 AndroidSdkHandler (com.android.sdklib.repository.AndroidSdkHandler)1 StudioLoggerProgressIndicator (com.android.tools.idea.sdk.progress.StudioLoggerProgressIndicator)1 JavaSdk (com.intellij.openapi.projectRoots.JavaSdk)1 JavaSdkVersion (com.intellij.openapi.projectRoots.JavaSdkVersion)1 Sdk (com.intellij.openapi.projectRoots.Sdk)1 AndroidSdkData (org.jetbrains.android.sdk.AndroidSdkData)1