private synchronized void init(@NonNull ILogger logger) { if (mSdkHandler == null) { mSdkHandler = AndroidSdkHandler.getInstance(mSdkLocation); ProgressIndicator progress = new LoggerProgressIndicatorWrapper(logger); mSdkHandler.getSdkManager(progress).reloadLocalIfNeeded(progress); File toolsFolder = new File(mSdkLocation, FD_TOOLS); File supportToolsFolder = new File(toolsFolder, FD_SUPPORT); File platformTools = new File(mSdkLocation, FD_PLATFORM_TOOLS); mSdkInfo = new SdkInfo( new File(supportToolsFolder, FN_ANNOTATIONS_JAR), new File(platformTools, FN_ADB)); } }
/** * Gets (and creates if necessary) an {@link AndroidTargetManager} based on our local sdk * packages. */ @NonNull public AndroidTargetManager getAndroidTargetManager(@NonNull ProgressIndicator progress) { if (mAndroidTargetManager == null) { getSdkManager(progress); mAndroidTargetManager = new AndroidTargetManager(this, mFop); } return mAndroidTargetManager; }
/** * Returns the highest available version of the given package that is contained by the given * range, or null if no such version was found. */ @Nullable public LocalPackage getPackageInRange( @NonNull String prefix, @NonNull Range<Revision> range, @NonNull ProgressIndicator progressIndicator) { Collection<LocalPackage> allBuildTools = getSdkManager(progressIndicator) .getPackages() .getLocalPackagesForPrefix(prefix); return allBuildTools .stream() .filter(p -> range.contains(p.getVersion())) // Consider highest versions first: .sorted(Comparator.comparing(LocalPackage::getVersion).reversed()) .findFirst() .orElse(null); }
public SdkManagerCli(@NonNull Settings settings, @NonNull PrintStream out, @Nullable InputStream in, @Nullable Downloader downloader, @NonNull AndroidSdkHandler handler) { mSettings = settings; mOut = out; mIn = in == null ? null : new BufferedReader(new InputStreamReader(in)); mDownloader = downloader; mProgress = settings.getProgressIndicator(); // Unfortunately AndroidSdkHandler etc. doesn't use nio (yet). We have to convert like this // to deal with the non-default provider (test) case. mHandler = handler; mRepoManager = mHandler.getSdkManager(mProgress); }
/** * Convenience to get a package from the local repo. */ @Nullable public LocalPackage getLocalPackage(@NonNull String path, @NonNull ProgressIndicator progress) { return getSdkManager(progress).getPackages().getLocalPackages().get(path); }
/** * Gets the customizable {@link RepositorySourceProvider}. Can be null if there's a problem * with the user's environment. */ @Nullable public LocalSourceProvider getUserSourceProvider(@NonNull ProgressIndicator progress) { if (mUserSourceProvider == null && mAndroidFolder != null) { mUserSourceProvider = RepoConfig.createUserSourceProvider(mFop, mAndroidFolder); synchronized (MANAGER_LOCK) { if (mRepoManager != null) { // If the repo already exists cause it to be reloaded, so the userSourceProvider // can be added to the config. mRepoManager = null; getSdkManager(progress); } } } return mUserSourceProvider; }
/** * Gets (and creates if necessary) a {@link SystemImageManager} based on our local sdk packages. */ @NonNull public SystemImageManager getSystemImageManager(@NonNull ProgressIndicator progress) { if (mSystemImageManager == null) { getSdkManager(progress); mSystemImageManager = new SystemImageManager(mRepoManager, getSysImgModule().createLatestFactory(), mFop); } return mSystemImageManager; }
AndroidSdkHandler handler = AndroidSdkHandler.getInstance(tempDir); ProgressIndicator progress = new ConsoleProgressIndicator(); RepoManager mgr = handler.getSdkManager(progress); SettingsController settings = new SettingsController() { @Override
/** * Creates a the {@link BuildToolInfo} for the specificed build tools revision, if available. * * @param revision The build tools revision requested * @param progress {@link ProgressIndicator} for logging. * @return The {@link BuildToolInfo} corresponding to the specified build tools package, or * {@code} null if that revision is not installed. */ @Nullable public BuildToolInfo getBuildToolInfo(@NonNull Revision revision, @NonNull ProgressIndicator progress) { RepositoryPackages packages = getSdkManager(progress).getPackages(); LocalPackage p = packages.getLocalPackages() .get(DetailsTypes.getBuildToolsPath(revision)); if (p == null) { return null; } return BuildToolInfo.fromLocalPackage(p); }
if (mTargets == null) { Map<String, String> newErrors = Maps.newHashMap(); RepoManager manager = mSdkHandler.getSdkManager(progress); Map<AndroidVersion, PlatformTarget> platformTargets = Maps.newHashMap(); BiMap<IAndroidTarget, LocalPackage> tempTargetToPackage = HashBiMap.create();
Map<RemotePackage, InstallResultType> installResults = new HashMap<>(); ProgressIndicator progress = getNewDownloadProgress(); RepoManager repoManager = mSdkHandler.getSdkManager(progress); checkNeedsCacheReset(repoManager, sdkLibData); repoManager.loadSynchronously( .getSdkManager(progress) .getPackages() .getConsolidatedPkgs()
/** * @see #getLatestLocalPackageForPrefix(String, boolean, Function, Comparator, * ProgressIndicator) , but for {@link RemotePackage}s instead. */ @Nullable public <T> RemotePackage getLatestRemotePackageForPrefix(@NonNull String prefix, boolean allowPreview, @NonNull Function<String, T> mapper, @NonNull Comparator<T> comparator, @NonNull ProgressIndicator progress) { return getLatestPackageFromPrefixCollection( getSdkManager(progress).getPackages().getRemotePackagesForPrefix(prefix), allowPreview, mapper, comparator); }
/** * This grabs the {@link Collection} of {@link LocalPackage}s from {@link RepoManager} with the * same prefix using * {@link RepositoryPackages#getLocalPackagesForPrefix(String)} * and forwards it to * {@link #getLatestPackageFromPrefixCollection(Collection, boolean, Function, Comparator)} */ @Nullable public <T> LocalPackage getLatestLocalPackageForPrefix(@NonNull String prefix, boolean allowPreview, @NonNull Function<String, T> mapper, @NonNull Comparator<T> comparator, @NonNull ProgressIndicator progress) { return getLatestPackageFromPrefixCollection( getSdkManager(progress).getPackages().getLocalPackagesForPrefix(prefix), allowPreview, mapper, comparator); }
RepoManager repoManager = mSdkHandler.getSdkManager(progress); checkNeedsCacheReset(repoManager, sdkLibData); repoManager.loadSynchronously(
ProgressIndicator progress = new LoggerProgressIndicatorWrapper(new StdLogger(StdLogger.Level.WARNING)); RepoManager repoManager = mSdkHandler.getSdkManager(progress); repoManager.loadSynchronously(0, progress, null, null); LocalPackage localSdkToolPackage =