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
This commit is contained in:
Martin Stjernholm
2022-11-17 22:31:08 +00:00
parent 9789a45e19
commit 9d5a475d34

View File

@@ -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: