From 4f9bf27edd65eab9d64162c70db34656ddcd8481 Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Fri, 17 Apr 2020 14:04:55 -0700 Subject: [PATCH] [pm] restore ABI info on system stub install after update removal Fix a boolean check BUG: 153001171 Test: manual with installing an update and uninstall it for webview. Change-Id: I83bd4d2e235a359ea09846cedf5010f4bf314c67 --- .../com/android/server/pm/PackageManagerService.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 7adafe3ed658d..822bd4dbb5540 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -11203,8 +11203,16 @@ public class PackageManagerService extends IPackageManager.Stub boolean needToDeriveAbi = (scanFlags & SCAN_FIRST_BOOT_OR_UPGRADE) != 0; if (!needToDeriveAbi) { if (pkgSetting != null) { - primaryCpuAbiFromSettings = pkgSetting.primaryCpuAbiString; - secondaryCpuAbiFromSettings = pkgSetting.secondaryCpuAbiString; + // TODO(b/154610922): if it is not first boot or upgrade, we should directly use + // API info from existing package setting. However, stub packages currently do not + // preserve ABI info, thus the special condition check here. Remove the special + // check after we fix the stub generation. + if (pkgSetting.pkg != null && pkgSetting.pkg.isStub()) { + needToDeriveAbi = true; + } else { + primaryCpuAbiFromSettings = pkgSetting.primaryCpuAbiString; + secondaryCpuAbiFromSettings = pkgSetting.secondaryCpuAbiString; + } } else { // Re-scanning a system package after uninstalling updates; need to derive ABI needToDeriveAbi = true;