@Nullable public IAndroidTarget findTargetByApiLevel(@NotNull String apiLevel) { IAndroidTarget candidate = null; for (IAndroidTarget target : getTargets()) { if (AndroidSdkUtils.targetHasId(target, apiLevel)) { if (target.isPlatform()) { return target; } else if (candidate == null) { candidate = target; } } } return candidate; }
@Override public boolean setupSdkPaths(Sdk sdk, SdkModel sdkModel) { final List<String> javaSdks = new ArrayList<String>(); final Sdk[] sdks = sdkModel.getSdks(); for (Sdk jdk : sdks) { if (AndroidSdkUtils.isApplicableJdk(jdk)) { javaSdks.add(jdk.getName()); } } if (javaSdks.isEmpty()) { Messages.showErrorDialog( AndroidBundle.message("no.jdk.for.android.found.error"), "No Java SDK Found"); return false; } int choice = Messages.showChooseDialog( "Please select Java SDK", "Select Internal Java Platform", ArrayUtil.toStringArray(javaSdks), javaSdks.get(0), Messages.getQuestionIcon()); if (choice == -1) { return false; } final String name = javaSdks.get(choice); final Sdk jdk = sdkModel.findSdk(name); MessageBuildingSdkLog log = new MessageBuildingSdkLog(); AndroidSdkData sdkData = AndroidSdkData.parse(sdk.getHomePath(), log); if (sdkData == null) { String errorMessage = log.getErrorMessage().length() > 0 ? log.getErrorMessage() : AndroidBundle.message("cannot.parse.sdk.error"); Messages.showErrorDialog(errorMessage, "SDK Parsing Error"); return false; } IAndroidTarget[] targets = sdkData.getTargets(); if (targets.length == 0) { Messages.showErrorDialog( AndroidBundle.message("no.android.targets.error"), CommonBundle.getErrorTitle()); return false; } String[] targetNames = new String[targets.length]; String newestPlatform = null; AndroidVersion version = null; for (int i = 0; i < targets.length; i++) { IAndroidTarget target = targets[i]; String targetName = AndroidSdkUtils.getTargetPresentableName(target); targetNames[i] = targetName; if (target.isPlatform() && (version == null || target.getVersion().compareTo(version) > 0)) { newestPlatform = targetName; version = target.getVersion(); } } choice = Messages.showChooseDialog( "Select build target", "Create New Android SDK", targetNames, newestPlatform != null ? newestPlatform : targetNames[0], Messages.getQuestionIcon()); if (choice == -1) { return false; } AndroidSdkUtils.setUpSdk(sdk, jdk, sdks, targets[choice], true); return true; }