/** * Calls the sdklib machinery to construct the {@link IAndroidTarget} for the given hash string. * * @return appropriate {@link IAndroidTarget} or null if the matching platform package is not * installed. */ @Nullable private static IAndroidTarget getAndroidTarget( @NonNull SdkHandler sdkHandler, @NonNull String targetHash) { File sdkLocation = sdkHandler.getSdkFolder(); ProgressIndicator progressIndicator = new LoggerProgressIndicatorWrapper(LOGGER); IAndroidTarget target = AndroidSdkHandler.getInstance(sdkLocation) .getAndroidTargetManager(progressIndicator) .getTargetFromHashString(targetHash, progressIndicator); if (target != null) { return target; } // reset the cached AndroidSdkHandler, next time a target is looked up, // this will force the re-parsing of the SDK. AndroidSdkHandler.resetInstance(sdkLocation); // and let's try immediately, it's possible the platform was installed since the SDK // handler was initialized in the this VM, since we reset the instance just above, it's // possible we find it. return AndroidSdkHandler.getInstance(sdkLocation) .getAndroidTargetManager(progressIndicator) .getTargetFromHashString(targetHash, progressIndicator); }