diff options
6 files changed, 21 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/ScanPackageUtils.java b/services/core/java/com/android/server/pm/ScanPackageUtils.java index 0dc188b75d5e..fe160e3fee22 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 8d1bcfcb3938..4f0f2a85381c 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 193e1a22d787..b91f15a4d037 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) { @@ -627,6 +628,11 @@ public class PackageImpl extends ParsingPackageImpl implements ParsedPackage, An } @Override + public boolean isApex() { + return getBoolean(Booleans.APEX); + } + + @Override public boolean isSystemExt() { return getBoolean(Booleans.SYSTEM_EXT); } @@ -694,6 +700,12 @@ public class PackageImpl extends ParsingPackageImpl implements ParsedPackage, An } @Override + public PackageImpl setApex(boolean isApex) { + setBoolean(Booleans.APEX, isApex); + return this; + } + + @Override public PackageImpl setSystemExt(boolean value) { setBoolean(Booleans.SYSTEM_EXT, value); return this; 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 bb08f09d5ab8..38d87e2eef3c 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 a0bb8dc48ecf..a529abbfadf5 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 7a9c41256d61..728fc6c8e536 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, |