String hashString = AndroidTargetHash.getPlatformHashString( version ); IAndroidTarget target = sdkManager.getAndroidTargetManager( progressIndicator ) .getTargetFromHashString( hashString, progressIndicator ); for ( IAndroidTarget t: sdkManager.getAndroidTargetManager( null ).getTargets( null ) )
/** * 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); }
for ( IAndroidTarget target: targetManager.getTargets( progressIndicator ) )
/** * Returns the targets (platforms and addons) that are available in the SDK, sorted in * ascending order by API level. */ @NonNull public Collection<IAndroidTarget> getTargets(@NonNull ProgressIndicator progress) { return getTargetMap(progress).values(); }
/** * 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; }
ProgressIndicator stdOutputProgress = getNewDownloadProgress(); IAndroidTarget target = mSdkHandler.getAndroidTargetManager(progress) .getTargetFromHashString(targetHash, progress); .getTargetFromHashString(targetHash, progress);
/** * Returns all the {@link IAndroidTarget} versions installed in the user's SDK install * area. * * @return all the installed targets */ @NonNull public IAndroidTarget[] getTargets() { if (targets == null) { AndroidSdkHandler sdkHandler = getSdk(); if (sdkHandler != null) { ProgressIndicator logger = getRepositoryLogger(); Collection<IAndroidTarget> targets = sdkHandler.getAndroidTargetManager(logger) .getTargets(logger); this.targets = targets.toArray(new IAndroidTarget[targets.size()]); } else { targets = new IAndroidTarget[0]; } } return targets; }
/** * Returns the error, if any, encountered when error creating a target for a package. */ @Nullable public String getErrorForPackage(@NonNull String path) { // We assume we're in here because it's known that there's some error. If mLoadErrors // is null we must reload, so we can say exactly what the problem was (if it persists). if (mLoadErrors == null) { getTargetMap(new ConsoleProgressIndicator()); } return mLoadErrors.get(path); }
@Override public void statusChanged(@NonNull PackageOperation op, @NonNull ProgressIndicator progress) throws StatusChangeListenerException { if (op.getInstallStatus() == COMPLETE) { // Update source path in PlatformTarget String targetHash = AndroidTargetHash.getPlatformHashString( ((DetailsTypes.ApiDetailsType) op.getPackage().getTypeDetails()) .getAndroidVersion()); IAndroidTarget target = mSdkHandler.getAndroidTargetManager(progress) .getTargetFromHashString(targetHash, progress); if (target instanceof PlatformTarget) { File sourcePath = null; if (op instanceof Installer) { sourcePath = op.getLocation(progress); } ((PlatformTarget) target).setSources(sourcePath); } } } }
/** * Returns a target from a hash that was generated by {@link IAndroidTarget#hashString()}. * * @param hash the {@link IAndroidTarget} hash string. * @return The matching {@link IAndroidTarget} or null. */ @Nullable public IAndroidTarget getTargetFromHashString(@Nullable String hash, @NonNull ProgressIndicator progress) { if (hash != null) { for (IAndroidTarget target : getTargets(progress)) { if (target != null && hash.equals(AndroidTargetHash.getTargetHashString(target))) { return target; } } } return null; }
@Nullable public IAndroidTarget getTargetFromPackage(@NonNull LocalPackage p, @NonNull ProgressIndicator progress) { return getTargetMap(progress).get(p); } }
/** * Returns first target found with API level no lower than the minimum provided. * @param minimumApiLevel minimum api level desired for target. * @param progress progress indicator. * @return a matching {@link IAndroidTarget} or null */ @Nullable public IAndroidTarget getTargetOfAtLeastApiLevel( int minimumApiLevel, @NonNull ProgressIndicator progress) { for (IAndroidTarget target : getTargets(progress)) { if (target.getVersion().getApiLevel() >= minimumApiLevel) { return target; } } return null; }