diff options
| author | MÃ¥rten Kongstad <marten.kongstad@sonymobile.com> | 2014-11-07 10:52:17 +0100 |
|---|---|---|
| committer | Zoran Jovanovic <zoran.jovanovic@sonymobile.com> | 2014-11-07 16:07:42 +0100 |
| commit | 30113131fb958850ef92c6a8f7f2aa2ed92a8ffe (patch) | |
| tree | d6d1d9b3c5bbc4e67caaf67e7c967ebd0a4cbe0f | |
| parent | 840796a3c29183a6f9bcf3d50ecae45405b63d88 (diff) | |
| download | frameworks_base-30113131fb958850ef92c6a8f7f2aa2ed92a8ffe.zip frameworks_base-30113131fb958850ef92c6a8f7f2aa2ed92a8ffe.tar.gz frameworks_base-30113131fb958850ef92c6a8f7f2aa2ed92a8ffe.tar.bz2 | |
RRO: reintroduce lost ResTable insert of assets
With the recent introduction of AssetManager::appendPathToResTable,
overlay packages were not properly added to the AssetManager, and once
added, were not properly inserted into the ResTable.
Bug: 17765434
Change-Id: Ie21f227c654c98730f74a687d0e16ee2b80e747e
| -rw-r--r-- | core/java/android/content/res/AssetManager.java | 16 | ||||
| -rw-r--r-- | core/jni/android_util_AssetManager.cpp | 2 | ||||
| -rw-r--r-- | libs/androidfw/AssetManager.cpp | 4 |
3 files changed, 20 insertions, 2 deletions
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java index e578822..72f24d3 100644 --- a/core/java/android/content/res/AssetManager.java +++ b/core/java/android/content/res/AssetManager.java @@ -627,7 +627,21 @@ public final class AssetManager implements AutoCloseable { * * {@hide} */ - public native final int addOverlayPath(String idmapPath); + + public final int addOverlayPath(String idmapPath) { + synchronized (this) { + int res = addOverlayPathNative(idmapPath); + makeStringBlocks(mStringBlocks); + return res; + } + } + + /** + * See addOverlayPath. + * + * {@hide} + */ + public native final int addOverlayPathNative(String idmapPath); /** * Add multiple sets of assets to the asset manager at once. See diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index 4859ee6..0dd35ea 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -2001,7 +2001,7 @@ static JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_getAssetRemainingLength }, { "addAssetPathNative", "(Ljava/lang/String;)I", (void*) android_content_AssetManager_addAssetPath }, - { "addOverlayPath", "(Ljava/lang/String;)I", + { "addOverlayPathNative", "(Ljava/lang/String;)I", (void*) android_content_AssetManager_addOverlayPath }, { "isUpToDate", "()Z", (void*) android_content_AssetManager_isUpToDate }, diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp index de6a33c..a1f7858 100644 --- a/libs/androidfw/AssetManager.cpp +++ b/libs/androidfw/AssetManager.cpp @@ -296,6 +296,10 @@ bool AssetManager::addOverlayPath(const String8& packagePath, int32_t* cookie) mAssetPaths.add(oap); *cookie = static_cast<int32_t>(mAssetPaths.size()); + if (mResources != NULL) { + appendPathToResTable(oap); + } + return true; } |
