From 31569a17afc2bc5dd0c970db35d7f5cd71a491f4 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Thu, 31 Mar 2022 17:14:03 +0800 Subject: [PATCH 1/2] Migrate from ApexManager#getPackageInfo We will store all package information in PMS and ApexManager#getPackageInfo will be removed. All queries about package information should be done via PM. Bug: 225756739 Test: presubmit Change-Id: Ic40c3f4eff97b53e6ec4c733b3f68cf264db103f --- .../java/com/android/server/SystemServiceManager.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/SystemServiceManager.java b/services/core/java/com/android/server/SystemServiceManager.java index 78df983c83f72..a562afbe442fa 100644 --- a/services/core/java/com/android/server/SystemServiceManager.java +++ b/services/core/java/com/android/server/SystemServiceManager.java @@ -23,6 +23,7 @@ import android.app.ActivityManager; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.os.Environment; import android.os.SystemClock; @@ -162,16 +163,17 @@ public final class SystemServiceManager implements Dumpable { /** * Returns true if the jar is in a test APEX. */ - private static boolean isJarInTestApex(String pathStr) { + private boolean isJarInTestApex(String pathStr) { Path path = Paths.get(pathStr); if (path.getNameCount() >= 2 && path.getName(0).toString().equals("apex")) { String apexModuleName = path.getName(1).toString(); ApexManager apexManager = ApexManager.getInstance(); String packageName = apexManager.getActivePackageNameForApexModuleName(apexModuleName); - PackageInfo packageInfo = apexManager.getPackageInfo( - packageName, ApexManager.MATCH_ACTIVE_PACKAGE); - if (packageInfo != null) { + try { + PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(packageName, + PackageManager.PackageInfoFlags.of(PackageManager.MATCH_APEX)); return (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_TEST_ONLY) != 0; + } catch (Exception ignore) { } } return false; From af95f9df42d22a05ab1d0dcb05f47e7c4205132e Mon Sep 17 00:00:00 2001 From: JW Wang Date: Thu, 7 Apr 2022 10:17:34 +0800 Subject: [PATCH 2/2] Migrate from ApexManager#getPackageInfo ApexManager#gePackageInfo will be removed. Use #isApkInUpdatedApex for the check. Bug: 225756739 Test: presubmit Change-Id: I25d351c705be572a4109753f16ded36a02c2b273 --- .../server/pm/permission/PermissionManagerServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java index c524fb7ae9e57..a963280c7991c 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java @@ -47,7 +47,6 @@ import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static android.permission.PermissionManager.KILL_APP_REASON_GIDS_CHANGED; import static android.permission.PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED; -import static com.android.server.pm.ApexManager.MATCH_ACTIVE_PACKAGE; import static com.android.server.pm.PackageManagerService.DEBUG_INSTALL; import static com.android.server.pm.PackageManagerService.DEBUG_PACKAGE_SCANNING; import static com.android.server.pm.PackageManagerService.DEBUG_PERMISSIONS; @@ -3240,9 +3239,7 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt } // Only enforce the allowlist on boot if (!mSystemReady) { - final boolean isInUpdatedApex = containingApexPackageName != null - && !apexManager.isFactory(apexManager.getPackageInfo(containingApexPackageName, - MATCH_ACTIVE_PACKAGE)); + final boolean isInUpdatedApex = packageSetting.isApkInUpdatedApex(); // Apps that are in updated apexs' do not need to be allowlisted if (!isInUpdatedApex) { Slog.w(TAG, "Privileged permission " + permissionName + " for package "