diff --git a/services/core/java/com/android/server/pm/ScanPackageUtils.java b/services/core/java/com/android/server/pm/ScanPackageUtils.java index 0dc188b75d5e9..fe160e3fee227 100644 --- a/services/core/java/com/android/server/pm/ScanPackageUtils.java +++ b/services/core/java/com/android/server/pm/ScanPackageUtils.java @@ -24,6 +24,7 @@ import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; import static com.android.server.pm.PackageManagerService.DEBUG_ABI_SELECTION; import static com.android.server.pm.PackageManagerService.DEBUG_PACKAGE_SCANNING; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; +import static com.android.server.pm.PackageManagerService.SCAN_AS_APEX; import static com.android.server.pm.PackageManagerService.SCAN_AS_FULL_APP; import static com.android.server.pm.PackageManagerService.SCAN_AS_INSTANT_APP; import static com.android.server.pm.PackageManagerService.SCAN_AS_ODM; @@ -853,6 +854,8 @@ final class ScanPackageUtils { .markNotActivitiesAsNotExportedIfSingleUser(); } + parsedPackage.setApex((scanFlags & SCAN_AS_APEX) != 0); + parsedPackage.setPrivileged((scanFlags & SCAN_AS_PRIVILEGED) != 0) .setOem((scanFlags & SCAN_AS_OEM) != 0) .setVendor((scanFlags & SCAN_AS_VENDOR) != 0) diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java index 8d1bcfcb39383..4f0f2a85381cb 100644 --- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java +++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java @@ -121,6 +121,7 @@ public class PackageInfoUtils { info.isStub = pkg.isStub(); info.coreApp = pkg.isCoreApp(); + info.isApex = pkg.isApex(); if (pkgSetting != null && !pkgSetting.hasSharedUser()) { // It is possible that this shared UID app has left diff --git a/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java b/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java index 193e1a22d787c..b91f15a4d037b 100644 --- a/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java +++ b/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java @@ -161,6 +161,7 @@ public class PackageImpl extends ParsingPackageImpl implements ParsedPackage, An private static final int SIGNED_WITH_PLATFORM_KEY = 1 << 9; private static final int NATIVE_LIBRARY_ROOT_REQUIRES_ISA = 1 << 10; private static final int STUB = 1 << 11; + private static final int APEX = 1 << 12; } private ParsedPackage setBoolean(@Booleans.Flags int flag, boolean value) { @@ -626,6 +627,11 @@ public class PackageImpl extends ParsingPackageImpl implements ParsedPackage, An return getBoolean(Booleans.FACTORY_TEST); } + @Override + public boolean isApex() { + return getBoolean(Booleans.APEX); + } + @Override public boolean isSystemExt() { return getBoolean(Booleans.SYSTEM_EXT); @@ -693,6 +699,12 @@ public class PackageImpl extends ParsingPackageImpl implements ParsedPackage, An return this; } + @Override + public PackageImpl setApex(boolean isApex) { + setBoolean(Booleans.APEX, isApex); + return this; + } + @Override public PackageImpl setSystemExt(boolean value) { setBoolean(Booleans.SYSTEM_EXT, value); diff --git a/services/core/java/com/android/server/pm/parsing/pkg/ParsedPackage.java b/services/core/java/com/android/server/pm/parsing/pkg/ParsedPackage.java index bb08f09d5ab8b..38d87e2eef3c0 100644 --- a/services/core/java/com/android/server/pm/parsing/pkg/ParsedPackage.java +++ b/services/core/java/com/android/server/pm/parsing/pkg/ParsedPackage.java @@ -66,6 +66,8 @@ public interface ParsedPackage extends AndroidPackage { ParsedPackage setFactoryTest(boolean factoryTest); + ParsedPackage setApex(boolean isApex); + ParsedPackage markNotActivitiesAsNotExportedIfSingleUser(); ParsedPackage setOdm(boolean odm); diff --git a/services/core/java/com/android/server/pm/pkg/AndroidPackageApi.java b/services/core/java/com/android/server/pm/pkg/AndroidPackageApi.java index a0bb8dc48ecf3..a529abbfadf50 100644 --- a/services/core/java/com/android/server/pm/pkg/AndroidPackageApi.java +++ b/services/core/java/com/android/server/pm/pkg/AndroidPackageApi.java @@ -331,6 +331,8 @@ public interface AndroidPackageApi { boolean isFactoryTest(); + boolean isApex(); + boolean isNativeLibraryRootRequiresIsa(); boolean isOdm(); diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt index 7a9c41256d612..728fc6c8e5366 100644 --- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt +++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt @@ -200,6 +200,7 @@ class AndroidPackageTest : ParcelableComponentTest(AndroidPackage::class, Packag AndroidPackage::isExternalStorage, AndroidPackage::isExtractNativeLibs, AndroidPackage::isFactoryTest, + AndroidPackage::isApex, AndroidPackage::isForceQueryable, AndroidPackage::isFullBackupOnly, AndroidPackage::isGame,