Add ParsedPackage.setApex

A prerequisite to migrate from ApexPackageInfo. This allows PMS to know
whether a package is APEX or not.

Bug: 225756739
Test: atest AndroidPackageTest
Change-Id: I0269bdbd3a7a1a5b6a4076ddbeab41fa9763ae92
This commit is contained in:
JW Wang
2022-04-18 16:05:59 +08:00
committed by Chun-Wei Wang
parent 6af7e357c5
commit cb96617ff6
6 changed files with 21 additions and 0 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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);

View File

@@ -66,6 +66,8 @@ public interface ParsedPackage extends AndroidPackage {
ParsedPackage setFactoryTest(boolean factoryTest);
ParsedPackage setApex(boolean isApex);
ParsedPackage markNotActivitiesAsNotExportedIfSingleUser();
ParsedPackage setOdm(boolean odm);

View File

@@ -331,6 +331,8 @@ public interface AndroidPackageApi {
boolean isFactoryTest();
boolean isApex();
boolean isNativeLibraryRootRequiresIsa();
boolean isOdm();

View File

@@ -200,6 +200,7 @@ class AndroidPackageTest : ParcelableComponentTest(AndroidPackage::class, Packag
AndroidPackage::isExternalStorage,
AndroidPackage::isExtractNativeLibs,
AndroidPackage::isFactoryTest,
AndroidPackage::isApex,
AndroidPackage::isForceQueryable,
AndroidPackage::isFullBackupOnly,
AndroidPackage::isGame,