Search for runtime resource overlays in Java in subdir.
See go/sku-colors. This changes the directory to search for package overlays if the right system property is defined. This allows OEMs to specify different resources based on device SKUs. Bug: 31692079 Change-Id: Ifae9ba03a4db517753ed9226048a7f912150294a
This commit is contained in:
@@ -463,6 +463,12 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
private static final String PACKAGE_SCHEME = "package";
|
||||
|
||||
private static final String VENDOR_OVERLAY_DIR = "/vendor/overlay";
|
||||
/**
|
||||
* If VENDOR_OVERLAY_SKU_PROPERTY is set, search for runtime resource overlay APKs in
|
||||
* VENDOR_OVERLAY_DIR/<value of VENDOR_OVERLAY_SKU_PROPERTY> rather than in
|
||||
* VENDOR_OVERLAY_DIR.
|
||||
*/
|
||||
private static final String VENDOR_OVERLAY_SKU_PROPERTY = "ro.boot.vendor.overlay.sku";
|
||||
|
||||
private static int DEFAULT_EPHEMERAL_HASH_PREFIX_MASK = 0xFFFFF000;
|
||||
private static int DEFAULT_EPHEMERAL_HASH_PREFIX_COUNT = 5;
|
||||
@@ -2268,8 +2274,14 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
// Collect vendor overlay packages.
|
||||
// (Do this before scanning any apps.)
|
||||
// For security and version matching reason, only consider
|
||||
// overlay packages if they reside in VENDOR_OVERLAY_DIR.
|
||||
File vendorOverlayDir = new File(VENDOR_OVERLAY_DIR);
|
||||
// overlay packages if they reside in the right directory.
|
||||
File vendorOverlayDir;
|
||||
String overlaySkuDir = SystemProperties.get(VENDOR_OVERLAY_SKU_PROPERTY);
|
||||
if (!overlaySkuDir.isEmpty()) {
|
||||
vendorOverlayDir = new File(VENDOR_OVERLAY_DIR, overlaySkuDir);
|
||||
} else {
|
||||
vendorOverlayDir = new File(VENDOR_OVERLAY_DIR);
|
||||
}
|
||||
scanDirTracedLI(vendorOverlayDir, mDefParseFlags
|
||||
| PackageParser.PARSE_IS_SYSTEM
|
||||
| PackageParser.PARSE_IS_SYSTEM_DIR
|
||||
|
||||
Reference in New Issue
Block a user