summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSongchun Fan <schfan@google.com>2023-02-02 10:35:56 -0800
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-17 03:08:52 +0000
commit1b04c3b8aa7a866feae7eb44ab92cc80e03c9c22 (patch)
treec84c73dcd802db4116ae9d62d3641b8dd3accd08
parentc0ac625e276b11ccd5bc1fd83a8f30f0c0ff761b (diff)
downloadbase-1b04c3b8aa7a866feae7eb44ab92cc80e03c9c22.tar.gz
[RESTRICT AUTOMERGE][pm] still allow debuggable for system app downgrades
Turns out we do have internal tests that downgrades system apps, so adding this exception to allow for that. BUG: 267232653 BUG: 256202273 Test: manual Change-Id: Ie281bbdc8788ee64ff99a7c5150da7ce7926235e (cherry picked from commit ceeca68b8c3f0ed8427b0212f63defe2f075146e) (cherry picked from commit on googleplex-android-review.googlesource.com host: 3a04799f68de6b77fc89faddda032b1031551e78) Merged-In: Ie281bbdc8788ee64ff99a7c5150da7ce7926235e
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java22
1 files changed, 13 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index ae62f4107591..c32a57c68ede 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -2477,15 +2477,19 @@ final class InstallPackageHelper {
if (disabledPs != null) {
dataOwnerPkg = disabledPs.getPkg();
}
- try {
- PackageManagerServiceUtils.checkDowngrade(dataOwnerPkg, pkgLite);
- } catch (PackageManagerException e) {
- String errorMsg = "System app: " + packageName + " cannot be downgraded to"
- + " older than its preloaded version on the system image. "
- + e.getMessage();
- Slog.w(TAG, errorMsg);
- return Pair.create(
- PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE, errorMsg);
+ if (!Build.IS_DEBUGGABLE && !dataOwnerPkg.isDebuggable()) {
+ // Only restrict non-debuggable builds and non-debuggable version of the app
+ try {
+ PackageManagerServiceUtils.checkDowngrade(dataOwnerPkg, pkgLite);
+ } catch (PackageManagerException e) {
+ String errorMsg =
+ "System app: " + packageName + " cannot be downgraded to"
+ + " older than its preloaded version on the system"
+ + " image. " + e.getMessage();
+ Slog.w(TAG, errorMsg);
+ return Pair.create(
+ PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE, errorMsg);
+ }
}
}
}