From 0d511e900f619c604eb35f3e259bd0856fa3f96c Mon Sep 17 00:00:00 2001 From: Martin Stjernholm Date: Thu, 30 Mar 2023 17:16:01 +0100 Subject: [PATCH] Remove the "android" package from dexopting. We no longer allow dexopting the system server, so we need to ensure it isn't added to the list of packages to dexopt. Test: adb shell pm compile -m speed-profile -f -a with dalvik.vm.useartservice=false Bug: 274576247 Change-Id: I9da100987e611e59ac6ef2282bf0221d9417bc9a --- services/core/java/com/android/server/pm/DexOptHelper.java | 3 +++ .../java/com/android/server/pm/PackageManagerShellCommand.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java index 064be7c5ddc7c..39cd88810961b 100644 --- a/services/core/java/com/android/server/pm/DexOptHelper.java +++ b/services/core/java/com/android/server/pm/DexOptHelper.java @@ -745,6 +745,9 @@ public final class DexOptHelper { applyPackageFilter(snapshot, remainingPredicate, result, remainingPkgSettings, sortTemp, packageManagerService); + // Make sure the system server isn't in the result, because it can never be dexopted here. + result.removeIf(pkgSetting -> PLATFORM_PACKAGE_NAME.equals(pkgSetting.getPackageName())); + if (debug) { Log.i(TAG, "Packages to be dexopted: " + packagesToString(result)); Log.i(TAG, "Packages skipped from dexopt: " + packagesToString(remainingPkgSettings)); diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index cc60802967b0d..b489eba7594f9 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -24,6 +24,7 @@ import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED; import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET; import static com.android.server.LocalManagerRegistry.ManagerNotFoundException; +import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import android.accounts.IAccountManager; import android.annotation.NonNull; @@ -1950,6 +1951,8 @@ class PackageManagerShellCommand extends ShellCommand { List packageNames = null; if (allPackages) { packageNames = mInterface.getAllPackages(); + // Compiling the system server is only supported from odrefresh, so skip it. + packageNames.removeIf(packageName -> PLATFORM_PACKAGE_NAME.equals(packageName)); } else { String packageName = getNextArg(); if (packageName == null) {