Loading core/java/android/content/pm/PackageManager.java +0 −10 Original line number Diff line number Diff line Loading @@ -715,7 +715,6 @@ public abstract class PackageManager { INSTALL_FORCE_PERMISSION_PROMPT, INSTALL_INSTANT_APP, INSTALL_DONT_KILL_APP, INSTALL_FORCE_SDK, INSTALL_FULL_APP, INSTALL_ALLOCATE_AGGRESSIVE, INSTALL_VIRTUAL_PRELOAD, Loading Loading @@ -815,15 +814,6 @@ public abstract class PackageManager { */ public static final int INSTALL_DONT_KILL_APP = 0x00001000; /** * Flag parameter for {@link #installPackage} to indicate that this package is an * upgrade to a package that refers to the SDK via release letter or is targeting an SDK via * release letter that the current build does not support. * * @hide */ public static final int INSTALL_FORCE_SDK = 0x00002000; /** * Flag parameter for {@link #installPackage} to indicate that this package is * to be installed as a heavy weight app. This is fundamentally the opposite of Loading core/java/android/content/pm/PackageParser.java +3 −8 Original line number Diff line number Diff line Loading @@ -839,7 +839,6 @@ public class PackageParser { public static final int PARSE_IS_SYSTEM_DIR = 1 << 4; public static final int PARSE_COLLECT_CERTIFICATES = 1 << 5; public static final int PARSE_ENFORCE_CODE = 1 << 6; public static final int PARSE_FORCE_SDK = 1 << 7; public static final int PARSE_CHATTY = 1 << 31; @IntDef(flag = true, prefix = { "PARSE_" }, value = { Loading @@ -847,7 +846,6 @@ public class PackageParser { PARSE_COLLECT_CERTIFICATES, PARSE_ENFORCE_CODE, PARSE_EXTERNAL_STORAGE, PARSE_FORCE_SDK, PARSE_IGNORE_PROCESSES, PARSE_IS_SYSTEM_DIR, PARSE_MUST_BE_APK, Loading Loading @@ -2684,8 +2682,6 @@ public class PackageParser { * @param platformSdkCodenames array of allowed pre-release SDK codenames * for this platform * @param outError output array to populate with error, if applicable * @param forceCurrentDev if development target code is not available, use the current * development version by default. * @return the targetSdkVersion to use at runtime, or -1 if the package is * not compatible with this platform * @hide Exposed for unit testing only. Loading @@ -2693,7 +2689,7 @@ public class PackageParser { @TestApi public static int computeTargetSdkVersion(@IntRange(from = 0) int targetVers, @Nullable String targetCode, @NonNull String[] platformSdkCodenames, @NonNull String[] outError, boolean forceCurrentDev) { @NonNull String[] outError) { // If it's a release SDK, return the version number unmodified. if (targetCode == null) { return targetVers; Loading @@ -2701,7 +2697,7 @@ public class PackageParser { // If it's a pre-release SDK and the codename matches this platform, it // definitely targets this SDK. if (matchTargetCode(platformSdkCodenames, targetCode) || forceCurrentDev) { if (matchTargetCode(platformSdkCodenames, targetCode)) { return Build.VERSION_CODES.CUR_DEVELOPMENT; } Loading Loading @@ -2768,9 +2764,8 @@ public class PackageParser { return null; } boolean defaultToCurrentDevBranch = (flags & PARSE_FORCE_SDK) != 0; final int targetSdkVersion = computeTargetSdkVersion(targetVers, targetCode, SDK_CODENAMES, outError, defaultToCurrentDevBranch); targetCode, SDK_CODENAMES, outError); if (targetSdkVersion < 0) { return null; } Loading core/tests/coretests/src/android/content/pm/PackageParserTest.java +20 −46 Original line number Diff line number Diff line Loading @@ -162,14 +162,13 @@ public class PackageParserTest { } private void verifyComputeTargetSdkVersion(int targetSdkVersion, String targetSdkCodename, boolean isPlatformReleased, int expectedTargetSdk, boolean forceCurrentDev) { boolean isPlatformReleased, int expectedTargetSdk) { final String[] outError = new String[1]; final int result = PackageParser.computeTargetSdkVersion( targetSdkVersion, targetSdkCodename, isPlatformReleased ? CODENAMES_RELEASED : CODENAMES_PRE_RELEASE, outError, forceCurrentDev); outError); assertEquals(result, expectedTargetSdk); Loading @@ -185,28 +184,23 @@ public class PackageParserTest { // Do allow older release targetSdkVersion on pre-release platform. // APP: Released API 10 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, false, OLDER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, false, OLDER_VERSION); // Do allow same release targetSdkVersion on pre-release platform. // APP: Released API 20 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, false, PLATFORM_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, false, PLATFORM_VERSION); // Do allow newer release targetSdkVersion on pre-release platform. // APP: Released API 30 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, false, NEWER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, false, NEWER_VERSION); // Don't allow older pre-release targetSdkVersion on pre-release platform. // APP: Pre-release API 10 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1); // Do allow same pre-release targetSdkVersion on pre-release platform, Loading @@ -214,27 +208,16 @@ public class PackageParserTest { // APP: Pre-release API 20 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, false, Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */); Build.VERSION_CODES.CUR_DEVELOPMENT); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, false, Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */); Build.VERSION_CODES.CUR_DEVELOPMENT); // Don't allow newer pre-release targetSdkVersion on pre-release platform. // APP: Pre-release API 30 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1, false /* forceCurrentDev */); // Force newer pre-release targetSdkVersion to current pre-release platform. // APP: Pre-release API 30 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1); } @Test Loading @@ -242,45 +225,36 @@ public class PackageParserTest { // Do allow older release targetSdkVersion on released platform. // APP: Released API 10 // DEV: Released API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, true, OLDER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, true, OLDER_VERSION); // Do allow same release targetSdkVersion on released platform. // APP: Released API 20 // DEV: Released API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, true, PLATFORM_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, true, PLATFORM_VERSION); // Do allow newer release targetSdkVersion on released platform. // APP: Released API 30 // DEV: Released API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, true, NEWER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, true, NEWER_VERSION); // Don't allow older pre-release targetSdkVersion on released platform. // APP: Pre-release API 10 // DEV: Released API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1); // Don't allow same pre-release targetSdkVersion on released platform. // APP: Pre-release API 20 // DEV: Released API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1); // Don't allow newer pre-release targetSdkVersion on released platform. // APP: Pre-release API 30 // DEV: Released API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1); } /** Loading services/core/java/com/android/server/pm/PackageManagerService.java +1 −16 Original line number Diff line number Diff line Loading @@ -16321,7 +16321,6 @@ public class PackageManagerService extends IPackageManager.Stub final boolean onExternal = args.volumeUuid != null; final boolean instantApp = ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0); final boolean fullApp = ((installFlags & PackageManager.INSTALL_FULL_APP) != 0); final boolean forceSdk = ((installFlags & PackageManager.INSTALL_FORCE_SDK) != 0); final boolean virtualPreload = ((installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0); @ScanFlags int scanFlags = SCAN_NEW_INSTALL | SCAN_UPDATE_SIGNATURE; Loading Loading @@ -16353,8 +16352,7 @@ public class PackageManagerService extends IPackageManager.Stub // Retrieve PackageSettings and parse package @ParseFlags final int parseFlags = mDefParseFlags | PackageParser.PARSE_CHATTY | PackageParser.PARSE_ENFORCE_CODE | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0) | (forceSdk ? PackageParser.PARSE_FORCE_SDK : 0); | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0); PackageParser pp = new PackageParser(); pp.setSeparateProcesses(mSeparateProcesses); Loading Loading @@ -16775,19 +16773,6 @@ public class PackageManagerService extends IPackageManager.Stub "replacePackageLI: new=" + pkg + ", old=" + oldPackage); } // don't allow upgrade to target a release SDK from a pre-release SDK final boolean oldTargetsPreRelease = oldPackage.applicationInfo.targetSdkVersion == Build.VERSION_CODES.CUR_DEVELOPMENT; final boolean newTargetsPreRelease = pkg.applicationInfo.targetSdkVersion == Build.VERSION_CODES.CUR_DEVELOPMENT; if (oldTargetsPreRelease && !newTargetsPreRelease && ((parseFlags & PackageParser.PARSE_FORCE_SDK) == 0)) { Slog.w(TAG, "Can't install package targeting released sdk"); throw new PrepareFailure( PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); } ps = mSettings.mPackages.get(pkgName11); disabledPs = mSettings.getDisabledSystemPkgLPr(ps); services/core/java/com/android/server/pm/PackageManagerShellCommand.java +1 −4 Original line number Diff line number Diff line Loading @@ -2383,8 +2383,7 @@ class PackageManagerShellCommand extends ShellCommand { sessionParams.volumeUuid = null; } break; case "--force-sdk": sessionParams.installFlags |= PackageManager.INSTALL_FORCE_SDK; case "--force-sdk": // ignore break; case "--apex": sessionParams.setInstallAsApex(); Loading Loading @@ -2961,8 +2960,6 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" 0=unknown, 1=admin policy, 2=device restore,"); pw.println(" 3=device setup, 4=user request"); pw.println(" --force-uuid: force install on to disk volume with given UUID"); pw.println(" --force-sdk: allow install even when existing app targets platform"); pw.println(" codename but new one targets a final API level"); pw.println(" --apex: install an .apex file, not an .apk"); pw.println(""); pw.println(" install-create [-lrtsfdg] [-i PACKAGE] [--user USER_ID|all|current]"); Loading Loading
core/java/android/content/pm/PackageManager.java +0 −10 Original line number Diff line number Diff line Loading @@ -715,7 +715,6 @@ public abstract class PackageManager { INSTALL_FORCE_PERMISSION_PROMPT, INSTALL_INSTANT_APP, INSTALL_DONT_KILL_APP, INSTALL_FORCE_SDK, INSTALL_FULL_APP, INSTALL_ALLOCATE_AGGRESSIVE, INSTALL_VIRTUAL_PRELOAD, Loading Loading @@ -815,15 +814,6 @@ public abstract class PackageManager { */ public static final int INSTALL_DONT_KILL_APP = 0x00001000; /** * Flag parameter for {@link #installPackage} to indicate that this package is an * upgrade to a package that refers to the SDK via release letter or is targeting an SDK via * release letter that the current build does not support. * * @hide */ public static final int INSTALL_FORCE_SDK = 0x00002000; /** * Flag parameter for {@link #installPackage} to indicate that this package is * to be installed as a heavy weight app. This is fundamentally the opposite of Loading
core/java/android/content/pm/PackageParser.java +3 −8 Original line number Diff line number Diff line Loading @@ -839,7 +839,6 @@ public class PackageParser { public static final int PARSE_IS_SYSTEM_DIR = 1 << 4; public static final int PARSE_COLLECT_CERTIFICATES = 1 << 5; public static final int PARSE_ENFORCE_CODE = 1 << 6; public static final int PARSE_FORCE_SDK = 1 << 7; public static final int PARSE_CHATTY = 1 << 31; @IntDef(flag = true, prefix = { "PARSE_" }, value = { Loading @@ -847,7 +846,6 @@ public class PackageParser { PARSE_COLLECT_CERTIFICATES, PARSE_ENFORCE_CODE, PARSE_EXTERNAL_STORAGE, PARSE_FORCE_SDK, PARSE_IGNORE_PROCESSES, PARSE_IS_SYSTEM_DIR, PARSE_MUST_BE_APK, Loading Loading @@ -2684,8 +2682,6 @@ public class PackageParser { * @param platformSdkCodenames array of allowed pre-release SDK codenames * for this platform * @param outError output array to populate with error, if applicable * @param forceCurrentDev if development target code is not available, use the current * development version by default. * @return the targetSdkVersion to use at runtime, or -1 if the package is * not compatible with this platform * @hide Exposed for unit testing only. Loading @@ -2693,7 +2689,7 @@ public class PackageParser { @TestApi public static int computeTargetSdkVersion(@IntRange(from = 0) int targetVers, @Nullable String targetCode, @NonNull String[] platformSdkCodenames, @NonNull String[] outError, boolean forceCurrentDev) { @NonNull String[] outError) { // If it's a release SDK, return the version number unmodified. if (targetCode == null) { return targetVers; Loading @@ -2701,7 +2697,7 @@ public class PackageParser { // If it's a pre-release SDK and the codename matches this platform, it // definitely targets this SDK. if (matchTargetCode(platformSdkCodenames, targetCode) || forceCurrentDev) { if (matchTargetCode(platformSdkCodenames, targetCode)) { return Build.VERSION_CODES.CUR_DEVELOPMENT; } Loading Loading @@ -2768,9 +2764,8 @@ public class PackageParser { return null; } boolean defaultToCurrentDevBranch = (flags & PARSE_FORCE_SDK) != 0; final int targetSdkVersion = computeTargetSdkVersion(targetVers, targetCode, SDK_CODENAMES, outError, defaultToCurrentDevBranch); targetCode, SDK_CODENAMES, outError); if (targetSdkVersion < 0) { return null; } Loading
core/tests/coretests/src/android/content/pm/PackageParserTest.java +20 −46 Original line number Diff line number Diff line Loading @@ -162,14 +162,13 @@ public class PackageParserTest { } private void verifyComputeTargetSdkVersion(int targetSdkVersion, String targetSdkCodename, boolean isPlatformReleased, int expectedTargetSdk, boolean forceCurrentDev) { boolean isPlatformReleased, int expectedTargetSdk) { final String[] outError = new String[1]; final int result = PackageParser.computeTargetSdkVersion( targetSdkVersion, targetSdkCodename, isPlatformReleased ? CODENAMES_RELEASED : CODENAMES_PRE_RELEASE, outError, forceCurrentDev); outError); assertEquals(result, expectedTargetSdk); Loading @@ -185,28 +184,23 @@ public class PackageParserTest { // Do allow older release targetSdkVersion on pre-release platform. // APP: Released API 10 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, false, OLDER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, false, OLDER_VERSION); // Do allow same release targetSdkVersion on pre-release platform. // APP: Released API 20 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, false, PLATFORM_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, false, PLATFORM_VERSION); // Do allow newer release targetSdkVersion on pre-release platform. // APP: Released API 30 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, false, NEWER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, false, NEWER_VERSION); // Don't allow older pre-release targetSdkVersion on pre-release platform. // APP: Pre-release API 10 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, false, -1); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, false, -1); // Do allow same pre-release targetSdkVersion on pre-release platform, Loading @@ -214,27 +208,16 @@ public class PackageParserTest { // APP: Pre-release API 20 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, false, Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */); Build.VERSION_CODES.CUR_DEVELOPMENT); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, false, Build.VERSION_CODES.CUR_DEVELOPMENT, false /* forceCurrentDev */); Build.VERSION_CODES.CUR_DEVELOPMENT); // Don't allow newer pre-release targetSdkVersion on pre-release platform. // APP: Pre-release API 30 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1, false /* forceCurrentDev */); // Force newer pre-release targetSdkVersion to current pre-release platform. // APP: Pre-release API 30 // DEV: Pre-release API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, Build.VERSION_CODES.CUR_DEVELOPMENT, true /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, false, -1); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, false, -1); } @Test Loading @@ -242,45 +225,36 @@ public class PackageParserTest { // Do allow older release targetSdkVersion on released platform. // APP: Released API 10 // DEV: Released API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, true, OLDER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, RELEASED, true, OLDER_VERSION); // Do allow same release targetSdkVersion on released platform. // APP: Released API 20 // DEV: Released API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, true, PLATFORM_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, RELEASED, true, PLATFORM_VERSION); // Do allow newer release targetSdkVersion on released platform. // APP: Released API 30 // DEV: Released API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, true, NEWER_VERSION, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, RELEASED, true, NEWER_VERSION); // Don't allow older pre-release targetSdkVersion on released platform. // APP: Pre-release API 10 // DEV: Released API 20 verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE, true, -1); verifyComputeTargetSdkVersion(OLDER_VERSION, OLDER_PRE_RELEASE_WITH_FINGERPRINT, true, -1); // Don't allow same pre-release targetSdkVersion on released platform. // APP: Pre-release API 20 // DEV: Released API 20 verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE, true, -1); verifyComputeTargetSdkVersion(PLATFORM_VERSION, PRE_RELEASE_WITH_FINGERPRINT, true, -1); // Don't allow newer pre-release targetSdkVersion on released platform. // APP: Pre-release API 30 // DEV: Released API 20 verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1, false /* forceCurrentDev */); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE, true, -1); verifyComputeTargetSdkVersion(NEWER_VERSION, NEWER_PRE_RELEASE_WITH_FINGERPRINT, true, -1); } /** Loading
services/core/java/com/android/server/pm/PackageManagerService.java +1 −16 Original line number Diff line number Diff line Loading @@ -16321,7 +16321,6 @@ public class PackageManagerService extends IPackageManager.Stub final boolean onExternal = args.volumeUuid != null; final boolean instantApp = ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0); final boolean fullApp = ((installFlags & PackageManager.INSTALL_FULL_APP) != 0); final boolean forceSdk = ((installFlags & PackageManager.INSTALL_FORCE_SDK) != 0); final boolean virtualPreload = ((installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0); @ScanFlags int scanFlags = SCAN_NEW_INSTALL | SCAN_UPDATE_SIGNATURE; Loading Loading @@ -16353,8 +16352,7 @@ public class PackageManagerService extends IPackageManager.Stub // Retrieve PackageSettings and parse package @ParseFlags final int parseFlags = mDefParseFlags | PackageParser.PARSE_CHATTY | PackageParser.PARSE_ENFORCE_CODE | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0) | (forceSdk ? PackageParser.PARSE_FORCE_SDK : 0); | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0); PackageParser pp = new PackageParser(); pp.setSeparateProcesses(mSeparateProcesses); Loading Loading @@ -16775,19 +16773,6 @@ public class PackageManagerService extends IPackageManager.Stub "replacePackageLI: new=" + pkg + ", old=" + oldPackage); } // don't allow upgrade to target a release SDK from a pre-release SDK final boolean oldTargetsPreRelease = oldPackage.applicationInfo.targetSdkVersion == Build.VERSION_CODES.CUR_DEVELOPMENT; final boolean newTargetsPreRelease = pkg.applicationInfo.targetSdkVersion == Build.VERSION_CODES.CUR_DEVELOPMENT; if (oldTargetsPreRelease && !newTargetsPreRelease && ((parseFlags & PackageParser.PARSE_FORCE_SDK) == 0)) { Slog.w(TAG, "Can't install package targeting released sdk"); throw new PrepareFailure( PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); } ps = mSettings.mPackages.get(pkgName11); disabledPs = mSettings.getDisabledSystemPkgLPr(ps);
services/core/java/com/android/server/pm/PackageManagerShellCommand.java +1 −4 Original line number Diff line number Diff line Loading @@ -2383,8 +2383,7 @@ class PackageManagerShellCommand extends ShellCommand { sessionParams.volumeUuid = null; } break; case "--force-sdk": sessionParams.installFlags |= PackageManager.INSTALL_FORCE_SDK; case "--force-sdk": // ignore break; case "--apex": sessionParams.setInstallAsApex(); Loading Loading @@ -2961,8 +2960,6 @@ class PackageManagerShellCommand extends ShellCommand { pw.println(" 0=unknown, 1=admin policy, 2=device restore,"); pw.println(" 3=device setup, 4=user request"); pw.println(" --force-uuid: force install on to disk volume with given UUID"); pw.println(" --force-sdk: allow install even when existing app targets platform"); pw.println(" codename but new one targets a final API level"); pw.println(" --apex: install an .apex file, not an .apk"); pw.println(""); pw.println(" install-create [-lrtsfdg] [-i PACKAGE] [--user USER_ID|all|current]"); Loading