summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ryan Mitchell <rtmitchell@google.com> 2020-04-28 08:43:01 -0700
committer Ryan Mitchell <rtmitchell@google.com> 2020-06-03 15:07:45 -0700
commit6cf910314fec6b1175b276db543a249ce720c8e4 (patch)
treec1b841dd4a920be4b1fcd3a58067bad30c061211
parentcb61f9da9dfac1eb4c1da90f016de55343f67943 (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.java30
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