|| target.getVersion().getApiLevel() > latestTarget.getVersion().getApiLevel() )
try version = new AndroidVersion( apiLevel ); String hashString = AndroidTargetHash.getPlatformHashString( version ); IAndroidTarget target = sdkManager.getAndroidTargetManager( progressIndicator )
@Override public void installApks(ImmutableList<Path> apks, InstallOptions installOptions) { ImmutableList<File> apkFiles = apks.stream().map(Path::toFile).collect(toImmutableList()); try { if (getVersion() .isGreaterOrEqualThan(AndroidVersion.ALLOW_SPLIT_APK_INSTALLATION.getApiLevel())) { device.installPackages( apkFiles, installOptions.getAllowReinstall(), installOptions.getAllowDowngrade() ? ImmutableList.of("-d") : ImmutableList.of(), installOptions.getTimeout().toMillis(), TimeUnit.MILLISECONDS); } else { device.installPackage( Iterables.getOnlyElement(apkFiles).toString(), installOptions.getAllowReinstall(), installOptions.getAllowDowngrade() ? "-d" : null); } } catch (InstallException e) { throw InstallationException.builder() .withCause(e) .withMessage("Installation of the app failed.") .build(); } } }
public static ApiVersion clone(@NonNull AndroidVersion androidVersion) { return new ApiVersionImpl(androidVersion.getApiLevel(), androidVersion.getCodename()); }
int api = Integer.parseInt(apiOrPreviewName); if (api >= 1) { return new AndroidVersion(api, null); if (target.isPlatform()) { AndroidVersion version = target.getVersion(); if (version.isPreview() && apiOrPreviewName.equalsIgnoreCase(version.getCodename())) { return new AndroidVersion(version.getApiLevel(), version.getCodename()); return new AndroidVersion(api - 1, apiOrPreviewName); return new AndroidVersion(HIGHEST_KNOWN_API, apiOrPreviewName);
/** * Returns a description of this package that is suitable for a list display. * <p/> */ private static String createListDescription(String listDisplay, AndroidVersion version, boolean obsolete) { if (!listDisplay.isEmpty()) { return String.format("%1$s%2$s", listDisplay, obsolete ? " (Obsolete)" : ""); } if (version.isPreview()) { return String .format("Sources for Android '%1$s' Preview SDK%2$s", version.getCodename(), obsolete ? " (Obsolete)" : ""); } else { return String.format("Sources for Android SDK%2$s", version.getApiLevel(), obsolete ? " (Obsolete)" : ""); } }
@NonNull private static ApiVersion createApiVersion(@NonNull String value) { ApiVersion version = mock(ApiVersion.class); String s = value.substring(value.indexOf(' ') + 1); if (s.startsWith("'")) { String codeName = getUnquotedValue(s); AndroidVersion sdkVersion = SdkVersionInfo.getVersion(codeName, null); if (sdkVersion != null) { when(version.getCodename()).thenReturn(sdkVersion.getCodename()); when(version.getApiString()).thenReturn(sdkVersion.getApiString()); when(version.getApiLevel()).thenReturn(sdkVersion.getApiLevel()); } } else { when(version.getApiString()).thenReturn(s); when(version.getCodename()).thenReturn(null); when(version.getApiLevel()).thenReturn(Integer.parseInt(s)); } return version; }
/** * Returns a user-friendly description of this version, like "Android 5.1 (Lollipop)", * or "Android 6.X (N) Preview". */ public static String getVersionWithCodename(AndroidVersion version) { StringBuilder result = new StringBuilder(); result.append("Android "); if (version.isPreview()) { result.append(version.getCodename()); result.append(" Preview"); } else { String versionString = getVersionString(version.getFeatureLevel()); result.append(versionString == null ? "API " + version.getApiString() : versionString); String codeName = version.getCodename(); if (codeName == null) { codeName = getCodeName(version.getFeatureLevel()); } if (codeName != null) { result.append(" ("); result.append(codeName); result.append(")"); } } return result.toString(); } }
@Override public boolean canRunOn(@NonNull IAndroidTarget target) { if (getVersion().isPreview()) { return target.getVersion().equals(getVersion()); } return target.getVersion().getApiLevel() > getVersion().getApiLevel(); }
/** * Returns a short description for an {@link IDescription}. */ private static String createShortDescription(String listDisplay, Revision revision, String versionName, AndroidVersion version, boolean obsolete) { if (!listDisplay.isEmpty()) { return String.format("%1$s, revision %2$s%3$s", listDisplay, revision.toShortString(), obsolete ? " (Obsolete)" : ""); } String s; if (version.isPreview()) { s = String.format("SDK Platform Android %1$s Preview, revision %2$s%3$s", versionName, revision.toShortString(), obsolete ? " (Obsolete)" : ""); //$NON-NLS-2$ } else { s = String .format("SDK Platform Android %1$s, API %2$d, revision %3$s%4$s", versionName, version.getApiLevel(), revision.toShortString(), obsolete ? " (Obsolete)" : ""); //$NON-NLS-2$ } return s; }
/** * Returns the patching policy following the {@link AndroidProject#PROPERTY_BUILD_API} value * passed by Android Studio. * * @param androidVersion the android version of the target device * @param useAapt2OrAbove use aapt2 or above to process resources. * @return a {@link WormholePatchingPolicy} instance. */ @NonNull public static WormholePatchingPolicy getPatchingPolicy( AndroidVersion androidVersion, boolean useAapt2OrAbove, boolean createSeparateApkForResources) { if (androidVersion.getFeatureLevel() < AndroidVersion.ART_RUNTIME.getFeatureLevel()) { return PRE_LOLLIPOP; } else { return androidVersion.getFeatureLevel() >= AndroidVersion.VersionCodes.O && useAapt2OrAbove && createSeparateApkForResources ? MULTI_APK_SEPARATE_RESOURCES : MULTI_APK; } }
AndroidGradleOptions.getTargetFeatureLevel(getGlobalScope().getProject()); if (androidBuilderTarget.getVersion().getFeatureLevel() == targetDeviceFeatureLevel) { sdkHandler, AndroidTargetHash.getPlatformHashString( new AndroidVersion(targetDeviceFeatureLevel, null))); if (buildCode != null) { AndroidVersion versionFromBuildCode = new AndroidVersion(targetDeviceFeatureLevel - 1, buildCode);
/** * Returns a string with the API Level and optional codename. * Useful for debugging. * For display purpose, please use {@link #getApiString()} instead. */ @Override public String toString() { String s = String.format("API %1$d", mApiLevel); //$NON-NLS-1$ if (isPreview()) { s += String.format(", %1$s preview", mCodename); //$NON-NLS-1$ } return s; }
public String getTargetCodename() { checkState(mTargetInfo != null, "Cannot call getTargetCodename() before setTargetInfo() is called."); return mTargetInfo.getTarget().getVersion().getCodename(); }
/** * Returns a description of this package that is suitable for a list display. * <p/> */ private static String createListDescription(String listDisplay, AndroidVersion version, boolean obsolete) { if (!listDisplay.isEmpty()) { return String.format("%1$s%2$s", listDisplay, obsolete ? " (Obsolete)" : ""); } String s = String .format("Samples for SDK API %1$s%2$s%3$s", version.getApiString(), version.isPreview() ? " Preview" : "", obsolete ? " (Obsolete)" : ""); return s; }
/** * Compares this version with the specified API and returns true if this version * is greater or equal than the requested API -- that is the current version is a * suitable min-api-level for the argument API. */ public boolean isGreaterOrEqualThan(int api) { return compareTo(api, null /*codename*/) >= 0; }
@Override public boolean supportsFeature(@NonNull Feature feature) { switch (feature) { case SCREEN_RECORD: if (!getVersion().isGreaterOrEqualThan(19)) { return false; } if (mHasScreenRecorder == null) { mHasScreenRecorder = hasBinary(SCREEN_RECORDER_DEVICE_PATH); } return mHasScreenRecorder; case PROCSTATS: return getVersion().isGreaterOrEqualThan(19); default: return false; } }
public static ApiVersion clone(@NonNull AndroidVersion androidVersion) { return new ApiVersionImpl(androidVersion.getApiLevel(), androidVersion.getCodename()); }
/** * Returns a short description for an {@link IDescription}. */ private static String createShortDescription(String listDisplay, Revision revision, AndroidVersion version, boolean obsolete) { if (!listDisplay.isEmpty()) { return String.format("%1$s, revision %2$s%3$s", listDisplay, revision.toShortString(), obsolete ? " (Obsolete)" : ""); } if (version.isPreview()) { return String .format("Sources for Android '%1$s' Preview SDK, revision %2$s%3$s", version.getCodename(), revision.toShortString(), obsolete ? " (Obsolete)" : ""); } else { return String.format("Sources for Android SDK, API %1$d, revision %2$s%3$s", version.getApiLevel(), revision.toShortString(), obsolete ? " (Obsolete)" : ""); } }
/** * Returns the highest known API level. * * @return the highest known API level */ public int getHighestKnownApiLevel() { int max = SdkVersionInfo.HIGHEST_KNOWN_STABLE_API; for (IAndroidTarget target : getTargets()) { if (target.isPlatform()) { int api = target.getVersion().getApiLevel(); if (api > max && !target.getVersion().isPreview()) { max = api; } } } return max; }