From 15c7ec98515559473ab440467461b53bf84c0508 Mon Sep 17 00:00:00 2001 From: wu di Date: Fri, 30 Dec 2022 14:58:49 +0800 Subject: [PATCH] Calculate apk size multiple times The getPackageSize function in the BackgroundDexOptService class will repeatedly calculate the package size When calculating the size of the obtained directory, it is necessary to determine whether it has been calculated. bug:263869388 Change-Id: I0efbc885cfba37b984c53c8ec274335631e1fdc1 Signed-off-by: wu di --- .../android/server/pm/BackgroundDexOptService.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java index e41188049876c..e7b15175f4218 100644 --- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java +++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java @@ -572,11 +572,14 @@ public final class BackgroundDexOptService { size += getDirectorySize(path); if (!ArrayUtils.isEmpty(info.applicationInfo.splitSourceDirs)) { for (String splitSourceDir : info.applicationInfo.splitSourceDirs) { - path = Paths.get(splitSourceDir).toFile(); - if (path.isFile()) { - path = path.getParentFile(); + File pathSplitSourceDir = Paths.get(splitSourceDir).toFile(); + if (pathSplitSourceDir.isFile()) { + pathSplitSourceDir = pathSplitSourceDir.getParentFile(); } - size += getDirectorySize(path); + if (path.getAbsolutePath().equals(pathSplitSourceDir.getAbsolutePath())) { + continue; + } + size += getDirectorySize(pathSplitSourceDir); } } return size;