diff options
| author | 2020-04-28 08:43:01 -0700 | |
|---|---|---|
| committer | 2020-06-03 15:07:45 -0700 | |
| commit | 6cf910314fec6b1175b276db543a249ce720c8e4 (patch) | |
| tree | c1b841dd4a920be4b1fcd3a58067bad30c061211 | |
| parent | cb61f9da9dfac1eb4c1da90f016de55343f67943 (diff) | |
Warn for system overlays targeting pre-R
Pre-installed overlays should target the SDK of the system. Warn when
pre-installed overlays target a pre-R SDK.
Bug: 141751850
Test: build APK with target 29, pre-install, reboot, view error
Change-Id: I87c690878ed23a170ac424625f790bc1c87df99c
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 6bb10c79d382..4624757efd37 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -10656,6 +10656,20 @@ public class PackageManagerService extends IPackageManager.Stub return resultList; } + private int getVendorPartitionVersion() { + final String version = SystemProperties.get("ro.vndk.version"); + if (!version.isEmpty()) { + try { + return Integer.parseInt(version); + } catch (NumberFormatException ignore) { + if (ArrayUtils.contains(Build.VERSION.ACTIVE_CODENAMES, version)) { + return Build.VERSION_CODES.CUR_DEVELOPMENT; + } + } + } + return Build.VERSION_CODES.P; + } + @GuardedBy({"mInstallLock", "mLock"}) private ScanResult scanPackageTracedLI(ParsedPackage parsedPackage, final @ParseFlags int parseFlags, @ScanFlags int scanFlags, long currentTime, @@ -10837,7 +10851,7 @@ public class PackageManagerService extends IPackageManager.Stub // Scan as privileged apps that share a user with a priv-app. final boolean skipVendorPrivilegeScan = ((scanFlags & SCAN_AS_VENDOR) != 0) - && SystemProperties.getInt("ro.vndk.version", 28) < 28; + && getVendorPartitionVersion() < 28; if (((scanFlags & SCAN_AS_PRIVILEGED) == 0) && !pkg.isPrivileged() && (pkg.getSharedUserId() != null) @@ -12013,6 +12027,20 @@ public class PackageManagerService extends IPackageManager.Stub + pkg.getPackageName() + " is static and cannot be upgraded."); } + } else { + if ((scanFlags & SCAN_AS_VENDOR) != 0) { + if (pkg.getTargetSdkVersion() < getVendorPartitionVersion()) { + Slog.w(TAG, "System overlay " + pkg.getPackageName() + + " targets an SDK below the required SDK level of vendor" + + " overlays (" + getVendorPartitionVersion() + ")." + + " This will become an install error in a future release"); + } + } else if (pkg.getTargetSdkVersion() < Build.VERSION.SDK_INT) { + Slog.w(TAG, "System overlay " + pkg.getPackageName() + + " targets an SDK below the required SDK level of system" + + " overlays (" + Build.VERSION.SDK_INT + ")." + + " This will become an install error in a future release"); + } } } else { // A non-preloaded overlay packages must have targetSdkVersion >= Q, or be |