Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f36a216 authored by Jakub Adamek's avatar Jakub Adamek
Browse files

Search for RRO both in SKU subdir and in vendor/overlay

Currently, if the "ro.boot.vendor.overlay.subdir" property is set, we
only search in the subdir. It seems more powerful to search both in
there and in the standard /vendor/overlay directory.

Also, RRO packages have the "priority" attribute in the <overlay>
attribute in AndroidManifest.xml which serves for disambiguation.

Bug: 32202741
Change-Id: I7acff1b7f0e153830924047349f003295648a53b
parent 4a6e2466
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -187,19 +187,18 @@ static void verifySystemIdmaps()
                argv[argc++] = AssetManager::IDMAP_DIR;

                // Directories to scan for overlays: if OVERLAY_SKU_DIR_PROPERTY is defined,
                // use OVERLAY_DIR/<value of OVERLAY_SKU_DIR_PROPERTY> if exists, otherwise
                // use OVERLAY_DIR if exists.
                // use OVERLAY_DIR/<value of OVERLAY_SKU_DIR_PROPERTY> in addition to OVERLAY_DIR.
                char subdir[PROP_VALUE_MAX];
                int len = __system_property_get(AssetManager::OVERLAY_SKU_DIR_PROPERTY, subdir);
                String8 overlayPath;
                if (len > 0) {
                    overlayPath = String8(AssetManager::OVERLAY_DIR) + "/" + subdir;
                } else {
                    overlayPath = String8(AssetManager::OVERLAY_DIR);
                }
                    String8 overlayPath = String8(AssetManager::OVERLAY_DIR) + "/" + subdir;
                    if (stat(overlayPath.string(), &st) == 0) {
                        argv[argc++] = overlayPath.string();
                    }
                }
                if (stat(AssetManager::OVERLAY_DIR, &st) == 0) {
                    argv[argc++] = AssetManager::OVERLAY_DIR;
                }

                // Finally, invoke idmap (if any overlay directory exists)
                if (argc > 5) {
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ public:
    static const char* OVERLAY_DIR;
    /*
     * If OVERLAY_SKU_DIR_PROPERTY is set, search for runtime resource overlay
     * APKs in OVERLAY_DIR/<value of OVERLAY_SKU_DIR_PROPERTY> rather than in
     * APKs in OVERLAY_DIR/<value of OVERLAY_SKU_DIR_PROPERTY> in addition to
     * OVERLAY_DIR.
     */
    static const char* OVERLAY_SKU_DIR_PROPERTY;