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
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index da9415d..52b7ef4 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -187,18 +187,17 @@
                 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(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)
diff --git a/include/androidfw/AssetManager.h b/include/androidfw/AssetManager.h
index 099d82e..31b692d 100644
--- a/include/androidfw/AssetManager.h
+++ b/include/androidfw/AssetManager.h
@@ -74,7 +74,7 @@
     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;