From 9d5a475d34a2bb4ec1d080538f5500df288a6c0b Mon Sep 17 00:00:00 2001 From: Martin Stjernholm Date: Thu, 17 Nov 2022 22:31:08 +0000 Subject: [PATCH] Don't upgrade "extract" or "assume-verified" filters to "verify" when embedded dex files should be used. This fixes a bug and aligns with ART Services behavior. Test: m Bug: 251903639 Change-Id: I20f66528dd489212b2b91282a458d9849537c80c --- .../java/com/android/server/pm/PackageDexOptimizer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index 2a2410fd17679..226a27eccc035 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -785,7 +785,9 @@ public class PackageDexOptimizer { private String getRealCompilerFilter(ApplicationInfo info, String targetCompilerFilter, boolean isUsedByOtherApps) { if (info.isEmbeddedDexUsed()) { - return "verify"; + // Downgrade optimizing filters to "verify", but don't upgrade lower filters. + return DexFile.isOptimizedCompilerFilter(targetCompilerFilter) ? "verify" + : targetCompilerFilter; } // We force vmSafeMode on debuggable apps as well: @@ -822,7 +824,9 @@ public class PackageDexOptimizer { */ private String getRealCompilerFilter(AndroidPackage pkg, String targetCompilerFilter) { if (pkg.isUseEmbeddedDex()) { - return "verify"; + // Downgrade optimizing filters to "verify", but don't upgrade lower filters. + return DexFile.isOptimizedCompilerFilter(targetCompilerFilter) ? "verify" + : targetCompilerFilter; } // We force vmSafeMode on debuggable apps as well: