Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -30969,6 +30969,7 @@ package android.os { field public static final java.lang.String BASE_OS; field public static final java.lang.String CODENAME; field public static final java.lang.String INCREMENTAL; field public static final int MIN_SUPPORTED_TARGET_SDK_INT; field public static final int PREVIEW_SDK_INT; field public static final java.lang.String RELEASE; field public static final deprecated java.lang.String SDK; core/java/android/content/pm/ApplicationInfo.java +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Environment; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -1582,6 +1583,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & ApplicationInfo.PRIVATE_FLAG_VENDOR) != 0; } /** @hide */ public boolean isTargetingDeprecatedSdkVersion() { return targetSdkVersion < Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT; } /** * Returns whether or not this application was installed as a virtual preload. */ Loading core/java/android/os/Build.java +8 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,14 @@ public class Build { * @hide */ public static final int RESOURCES_SDK_INT = SDK_INT + ACTIVE_CODENAMES.length; /** * The current lowest supported value of app target SDK. Applications targeting * lower values will fail to install and run. Its possible values are defined * in {@link Build.VERSION_CODES}. */ public static final int MIN_SUPPORTED_TARGET_SDK_INT = SystemProperties.getInt( "ro.build.version.min_supported_target_sdk", 0); } /** Loading services/core/java/com/android/server/pm/PackageManagerService.java +11 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import static android.content.pm.PackageManager.INSTALL_FAILED_INTERNAL_ERROR; import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_APK; import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION; import static android.content.pm.PackageManager.INSTALL_FAILED_MISSING_SHARED_LIBRARY; import static android.content.pm.PackageManager.INSTALL_FAILED_NEWER_SDK; import static android.content.pm.PackageManager.INSTALL_FAILED_PACKAGE_CHANGED; import static android.content.pm.PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE; import static android.content.pm.PackageManager.INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE; Loading Loading @@ -16283,6 +16284,16 @@ public class PackageManagerService extends IPackageManager.Stub Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } // App targetSdkVersion is below min supported version if (!forceSdk && pkg.applicationInfo.isTargetingDeprecatedSdkVersion()) { Slog.w(TAG, "App " + pkg.packageName + " targets deprecated sdk"); res.setError(INSTALL_FAILED_NEWER_SDK, "App is targeting deprecated sdk (targetSdkVersion should be at least " + Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT + ")."); return; } // Instant apps must have target SDK >= O and have targetSanboxVersion >= 2 if (instantApp && pkg.applicationInfo.targetSdkVersion <= Build.VERSION_CODES.N_MR1) { Slog.w(TAG, "Instant app package " + pkg.packageName + " does not target O"); Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -30969,6 +30969,7 @@ package android.os { field public static final java.lang.String BASE_OS; field public static final java.lang.String CODENAME; field public static final java.lang.String INCREMENTAL; field public static final int MIN_SUPPORTED_TARGET_SDK_INT; field public static final int PREVIEW_SDK_INT; field public static final java.lang.String RELEASE; field public static final deprecated java.lang.String SDK;
core/java/android/content/pm/ApplicationInfo.java +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Environment; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -1582,6 +1583,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & ApplicationInfo.PRIVATE_FLAG_VENDOR) != 0; } /** @hide */ public boolean isTargetingDeprecatedSdkVersion() { return targetSdkVersion < Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT; } /** * Returns whether or not this application was installed as a virtual preload. */ Loading
core/java/android/os/Build.java +8 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,14 @@ public class Build { * @hide */ public static final int RESOURCES_SDK_INT = SDK_INT + ACTIVE_CODENAMES.length; /** * The current lowest supported value of app target SDK. Applications targeting * lower values will fail to install and run. Its possible values are defined * in {@link Build.VERSION_CODES}. */ public static final int MIN_SUPPORTED_TARGET_SDK_INT = SystemProperties.getInt( "ro.build.version.min_supported_target_sdk", 0); } /** Loading
services/core/java/com/android/server/pm/PackageManagerService.java +11 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import static android.content.pm.PackageManager.INSTALL_FAILED_INTERNAL_ERROR; import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_APK; import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION; import static android.content.pm.PackageManager.INSTALL_FAILED_MISSING_SHARED_LIBRARY; import static android.content.pm.PackageManager.INSTALL_FAILED_NEWER_SDK; import static android.content.pm.PackageManager.INSTALL_FAILED_PACKAGE_CHANGED; import static android.content.pm.PackageManager.INSTALL_FAILED_REPLACE_COULDNT_DELETE; import static android.content.pm.PackageManager.INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE; Loading Loading @@ -16283,6 +16284,16 @@ public class PackageManagerService extends IPackageManager.Stub Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } // App targetSdkVersion is below min supported version if (!forceSdk && pkg.applicationInfo.isTargetingDeprecatedSdkVersion()) { Slog.w(TAG, "App " + pkg.packageName + " targets deprecated sdk"); res.setError(INSTALL_FAILED_NEWER_SDK, "App is targeting deprecated sdk (targetSdkVersion should be at least " + Build.VERSION.MIN_SUPPORTED_TARGET_SDK_INT + ")."); return; } // Instant apps must have target SDK >= O and have targetSanboxVersion >= 2 if (instantApp && pkg.applicationInfo.targetSdkVersion <= Build.VERSION_CODES.N_MR1) { Slog.w(TAG, "Instant app package " + pkg.packageName + " does not target O");