From ab1102c24109494d0dc478f5d27a378ea3108a13 Mon Sep 17 00:00:00 2001 From: TYM Tsai Date: Fri, 15 Nov 2024 16:51:00 +0800 Subject: Fix unable to create base.art Previous optimization changed to do dexopt in the temporary folder during installation. But ART encodes paths in odex/vdex files, leading to temporary path abuse. To fix this problem, rename the path before dexopt. Bug: 378623723 Test: atest CtsPackageManagerTestCases Flag: android.content.pm.improve_install_freeze Change-Id: I28409bf7d9eeae2f752085ff0e32d2c169b5cbbd --- .../java/com/android/server/pm/InstallPackageHelper.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index 355184e1c758..4d44f0294f95 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -1022,12 +1022,14 @@ final class InstallPackageHelper { if (reconciledPackages == null) { return; } - if (Flags.improveInstallFreeze()) { - prepPerformDexoptIfNeeded(reconciledPackages); - } - if (renameAndUpdatePaths(requests) - && commitInstallPackages(reconciledPackages)) { - success = true; + if (renameAndUpdatePaths(requests)) { + // rename before dexopt because art will encoded the path in the odex/vdex file + if (Flags.improveInstallFreeze()) { + prepPerformDexoptIfNeeded(reconciledPackages); + } + if (commitInstallPackages(reconciledPackages)) { + success = true; + } } } } finally { -- cgit v1.2.3-59-g8ed1b