diff options
author | 2016-09-30 09:19:09 +0100 | |
---|---|---|
committer | 2016-10-03 10:14:12 +0100 | |
commit | c03d9483f0380fb7babfdeb11d6762bc6c8d784c (patch) | |
tree | 1586b9da530a3ae49bfd79e9745f9a1c9b19b483 | |
parent | c350547dcffec2ca490f881019c08cd4339251dc (diff) |
Change name of overlay subdir property to sku.
Also move the SKU subdirectories directly under /vendor/overlay.
Bug: 31692079
Change-Id: I68c712b13918cc99629534580ee4f77d9e5b3823
-rw-r--r-- | core/jni/android_util_AssetManager.cpp | 19 | ||||
-rw-r--r-- | core/jni/fd_utils-inl.h | 9 | ||||
-rw-r--r-- | include/androidfw/AssetManager.h | 7 | ||||
-rw-r--r-- | libs/androidfw/AssetManager.cpp | 3 |
4 files changed, 17 insertions, 21 deletions
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index 77d03433134b..da9415d10b73 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -186,18 +186,19 @@ static void verifySystemIdmaps() argv[argc++] = AssetManager::TARGET_APK_PATH; argv[argc++] = AssetManager::IDMAP_DIR; - // Directories to scan for overlays: if OVERLAY_SUBDIR_PROPERTY is defined, - // use OVERLAY_SUBDIR/<value of OVERLAY_SUBDIR_PROPERTY>/ if exists, otherwise + // 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. char subdir[PROP_VALUE_MAX]; - int len = __system_property_get(AssetManager::OVERLAY_SUBDIR_PROPERTY, subdir); + int len = __system_property_get(AssetManager::OVERLAY_SKU_DIR_PROPERTY, subdir); + String8 overlayPath; if (len > 0) { - String8 subdirPath = String8(AssetManager::OVERLAY_SUBDIR) + "/" + subdir; - if (stat(subdirPath.string(), &st) == 0) { - argv[argc++] = subdirPath.string(); - } - } else if (stat(AssetManager::OVERLAY_DIR, &st) == 0) { - argv[argc++] = AssetManager::OVERLAY_DIR; + overlayPath = String8(AssetManager::OVERLAY_DIR) + "/" + subdir; + } else { + overlayPath = String8(AssetManager::OVERLAY_DIR); + } + if (stat(overlayPath.string(), &st) == 0) { + argv[argc++] = overlayPath.string(); } // Finally, invoke idmap (if any overlay directory exists) diff --git a/core/jni/fd_utils-inl.h b/core/jni/fd_utils-inl.h index 5c17b23adacd..af2706911949 100644 --- a/core/jni/fd_utils-inl.h +++ b/core/jni/fd_utils-inl.h @@ -260,16 +260,13 @@ class FileDescriptorInfo { // Whitelist files needed for Runtime Resource Overlay, like these: // /system/vendor/overlay/framework-res.apk - // /system/vendor/overlay-subdir/pg/framework-res.apk + // /system/vendor/overlay/PG/android-framework-runtime-resource-overlay.apk // /data/resource-cache/system@vendor@overlay@framework-res.apk@idmap - // /data/resource-cache/system@vendor@overlay-subdir@pg@framework-res.apk@idmap - // See AssetManager.cpp for more details on overlay-subdir. + // /data/resource-cache/system@vendor@overlay@PG@framework-res.apk@idmap static const char* kOverlayDir = "/system/vendor/overlay/"; - static const char* kOverlaySubdir = "/system/vendor/overlay-subdir/"; static const char* kApkSuffix = ".apk"; - if ((android::base::StartsWith(path, kOverlayDir) - || android::base::StartsWith(path, kOverlaySubdir)) + if (android::base::StartsWith(path, kOverlayDir) && android::base::EndsWith(path, kApkSuffix) && path.find("/../") == std::string::npos) { return true; diff --git a/include/androidfw/AssetManager.h b/include/androidfw/AssetManager.h index 0b2280239260..099d82eb564f 100644 --- a/include/androidfw/AssetManager.h +++ b/include/androidfw/AssetManager.h @@ -73,12 +73,11 @@ public: static const char* IDMAP_BIN; static const char* OVERLAY_DIR; /* - * If OVERLAY_SUBDIR_PROPERTY is set, search for runtime resource overlay - * APKs in OVERLAY_SUBDIR/<value of OVERLAY_SUBDIR_PROPERTY>/ rather than in + * 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 * OVERLAY_DIR. */ - static const char* OVERLAY_SUBDIR; - static const char* OVERLAY_SUBDIR_PROPERTY; + static const char* OVERLAY_SKU_DIR_PROPERTY; static const char* TARGET_PACKAGE_NAME; static const char* TARGET_APK_PATH; static const char* IDMAP_DIR; diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp index 6fb57fafe5c0..daf35921b13d 100644 --- a/libs/androidfw/AssetManager.cpp +++ b/libs/androidfw/AssetManager.cpp @@ -76,10 +76,9 @@ static volatile int32_t gCount = 0; const char* AssetManager::RESOURCES_FILENAME = "resources.arsc"; const char* AssetManager::IDMAP_BIN = "/system/bin/idmap"; const char* AssetManager::OVERLAY_DIR = "/vendor/overlay"; +const char* AssetManager::OVERLAY_SKU_DIR_PROPERTY = "ro.boot.vendor.overlay.sku"; const char* AssetManager::TARGET_PACKAGE_NAME = "android"; const char* AssetManager::TARGET_APK_PATH = "/system/framework/framework-res.apk"; -const char* AssetManager::OVERLAY_SUBDIR = "/system/vendor/overlay-subdir"; -const char* AssetManager::OVERLAY_SUBDIR_PROPERTY = "ro.boot.vendor.overlay.subdir"; const char* AssetManager::IDMAP_DIR = "/data/resource-cache"; namespace { |