Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 161614e1 authored by Przemyslaw Szczepaniak's avatar Przemyslaw Szczepaniak Committed by Android (Google) Code Review
Browse files

Merge changes from topic "deprecated_sdk_1"

* changes:
  Reject apks targeting deprecated sdk
  Add Build.Version.MIN_SUPPORTED_TARGET_SDK_INT field.
parents 2bfdce3b ab223112
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+6 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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.
     */
+8 −0
Original line number Diff line number Diff line
@@ -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);
    }

    /**
+11 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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");