From f8cfb309e3787e865f41d9bd91b2c3f5c08b0841 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Wed, 5 Jan 2022 20:21:48 -0800 Subject: [PATCH] Refine last static lib version lookup. Bug: 213129909 Fixes: 213129909 Test: presubmit Change-Id: I9d7e68b53629396cb7cebbbf509c4eb207f13add --- .../server/pm/InstallPackageHelper.java | 35 +++++++++---------- .../server/pm/SharedLibrariesImpl.java | 2 +- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index c595b97f5987e..c5a30678e4e90 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -944,14 +944,13 @@ final class InstallPackageHelper { createdAppId.put(packageName, optimisticallyRegisterAppId(result)); versionInfos.put(result.mPkgSetting.getPkg().getPackageName(), mPm.getSettingsVersionForPackage(result.mPkgSetting.getPkg())); - if (result.mStaticSharedLibraryInfo != null - || result.mSdkSharedLibraryInfo != null) { - final PackageSetting sharedLibLatestVersionSetting = - mSharedLibraries.getSharedLibLatestVersionSetting(result); - if (sharedLibLatestVersionSetting != null) { + if (result.mStaticSharedLibraryInfo != null) { + final PackageSetting staticSharedLibLatestVersionSetting = + mSharedLibraries.getStaticSharedLibLatestVersionSetting(result); + if (staticSharedLibLatestVersionSetting != null) { lastStaticSharedLibSettings.put( result.mPkgSetting.getPkg().getPackageName(), - sharedLibLatestVersionSetting); + staticSharedLibLatestVersionSetting); } } } catch (PackageManagerException e) { @@ -3558,22 +3557,20 @@ final class InstallPackageHelper { boolean appIdCreated = false; try { final String pkgName = scanResult.mPkgSetting.getPackageName(); + final ReconcileRequest reconcileRequest = new ReconcileRequest( + Collections.singletonMap(pkgName, scanResult), + mSharedLibraries.getAll(), mPm.mPackages, + Collections.singletonMap(pkgName, + mPm.getSettingsVersionForPackage(parsedPackage)), + Collections.singletonMap(pkgName, + mSharedLibraries.getStaticSharedLibLatestVersionSetting( + scanResult))); final Map reconcileResult = - ReconcilePackageUtils.reconcilePackages( - new ReconcileRequest( - Collections.singletonMap(pkgName, scanResult), - mSharedLibraries.getAll(), - mPm.mPackages, - Collections.singletonMap( - pkgName, - mPm.getSettingsVersionForPackage( - parsedPackage)), - Collections.singletonMap(pkgName, mSharedLibraries - .getSharedLibLatestVersionSetting(scanResult))), + ReconcilePackageUtils.reconcilePackages(reconcileRequest, mPm.mSettings.getKeySetManagerService(), mPm.mInjector); appIdCreated = optimisticallyRegisterAppId(scanResult); - commitReconciledScanResultLocked( - reconcileResult.get(pkgName), mPm.mUserManager.getUserIds()); + commitReconciledScanResultLocked(reconcileResult.get(pkgName), + mPm.mUserManager.getUserIds()); } catch (PackageManagerException e) { if (appIdCreated) { cleanUpAppIdCreation(scanResult); diff --git a/services/core/java/com/android/server/pm/SharedLibrariesImpl.java b/services/core/java/com/android/server/pm/SharedLibrariesImpl.java index f38ae77a3aa92..0055f4eb6446a 100644 --- a/services/core/java/com/android/server/pm/SharedLibrariesImpl.java +++ b/services/core/java/com/android/server/pm/SharedLibrariesImpl.java @@ -381,7 +381,7 @@ public final class SharedLibrariesImpl implements SharedLibrariesRead, Watchable * @return The package setting that represents the latest version of shared library info. */ @Nullable - PackageSetting getSharedLibLatestVersionSetting(@NonNull ScanResult scanResult) { + PackageSetting getStaticSharedLibLatestVersionSetting(@NonNull ScanResult scanResult) { PackageSetting sharedLibPackage = null; synchronized (mPm.mLock) { final SharedLibraryInfo latestSharedLibraVersionLPr =