/** * Get a {@code AndroidSdkHandler} instance. * * @param localPath The path to the local SDK. If {@code null} this handler will only be used * for remote operations. */ @NonNull public static AndroidSdkHandler getInstance(@Nullable File localPath) { File key = localPath == null ? new File("") : localPath; synchronized (sInstances) { return sInstances.computeIfAbsent( key, k -> { File androidFolder; try { androidFolder = new File(AndroidLocation.getFolder()); } catch (AndroidLocation.AndroidLocationException e) { androidFolder = null; } return new AndroidSdkHandler( localPath, androidFolder, FileOpUtils.create()); }); } }