summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/LoadedApk.java2
-rw-r--r--include/androidfw/AttributeFinder.h7
-rw-r--r--libs/androidfw/AssetManager.cpp6
-rw-r--r--libs/androidfw/ResourceTypes.cpp3
-rw-r--r--tools/aapt/ResourceTable.cpp5
5 files changed, 18 insertions, 5 deletions
diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java
index c2bf28a..3eebfc6 100644
--- a/core/java/android/app/LoadedApk.java
+++ b/core/java/android/app/LoadedApk.java
@@ -601,7 +601,7 @@ public final class LoadedApk {
final int N = packageIdentifiers.size();
for (int i = 0; i < N; i++) {
final int id = packageIdentifiers.keyAt(i);
- if (id == 0x01 || id == 0x7f) {
+ if (id == 0x01 || id == 0x7f || id == 0x3f) {
continue;
}
diff --git a/include/androidfw/AttributeFinder.h b/include/androidfw/AttributeFinder.h
index acf7056..be0f1bd 100644
--- a/include/androidfw/AttributeFinder.h
+++ b/include/androidfw/AttributeFinder.h
@@ -74,6 +74,7 @@ private:
// Package Offsets (best-case, fast look-up).
Iterator mFrameworkStart;
+ Iterator mCMFrameworkStart;
Iterator mAppStart;
// Worst case, we have shared-library resources.
@@ -99,6 +100,9 @@ void BackTrackingAttributeFinder<Derived, Iterator>::jumpToClosestAttribute(cons
case 0x01:
mCurrent = mFrameworkStart;
break;
+ case 0x3f:
+ mCurrent = mCMFrameworkStart;
+ break;
case 0x7f:
mCurrent = mAppStart;
break;
@@ -132,6 +136,9 @@ void BackTrackingAttributeFinder<Derived, Iterator>::markCurrentPackageId(const
case 0x01:
mFrameworkStart = mCurrent;
break;
+ case 0x3f:
+ mCMFrameworkStart = mCurrent;
+ break;
case 0x7f:
mAppStart = mCurrent;
break;
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index 2dc1c96..ed7808a 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -75,6 +75,7 @@ static const char* kDefaultVendor = "default";
static const char* kAssetsRoot = "assets";
static const char* kAppZipName = NULL; //"classes.jar";
static const char* kSystemAssets = "framework/framework-res.apk";
+static const char* kCMSDKAssets = "framework/org.cyanogenmod.platform-res.apk";
static const char* kResourceCache = "resource-cache";
static const char* kAndroidManifest = "AndroidManifest.xml";
@@ -340,7 +341,10 @@ bool AssetManager::addDefaultAssets()
String8 path(root);
path.appendPath(kSystemAssets);
- return addAssetPath(path, NULL);
+ String8 pathCM(root);
+ pathCM.appendPath(kCMSDKAssets);
+
+ return addAssetPath(path, NULL) & addAssetPath(pathCM, NULL);
}
int32_t AssetManager::nextAssetPath(const int32_t cookie) const
diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp
index 62aabb1..320486d 100644
--- a/libs/androidfw/ResourceTypes.cpp
+++ b/libs/androidfw/ResourceTypes.cpp
@@ -60,6 +60,7 @@ namespace android {
#define IDMAP_CURRENT_VERSION 0x00000001
#define APP_PACKAGE_ID 0x7f
+#define CMSDK_PACKAGE_ID 0x3f
#define SYS_PACKAGE_ID 0x01
static const bool kDebugStringPoolNoisy = false;
@@ -6232,6 +6233,7 @@ DynamicRefTable::DynamicRefTable(uint8_t packageId)
// Reserved package ids
mLookupTable[APP_PACKAGE_ID] = APP_PACKAGE_ID;
mLookupTable[SYS_PACKAGE_ID] = SYS_PACKAGE_ID;
+ mLookupTable[CMSDK_PACKAGE_ID] = CMSDK_PACKAGE_ID;
}
status_t DynamicRefTable::load(const ResTable_lib_header* const header)
@@ -6539,7 +6541,6 @@ bool ResTable::getIdmapInfo(const void* idmap, size_t sizeBytes,
return true;
}
-
#define CHAR16_TO_CSTR(c16, len) (String8(String16(c16,len)).string())
#define CHAR16_ARRAY_EQ(constant, var, len) \
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index d5a09d8..1f736d0 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -2825,8 +2825,9 @@ status_t ResourceTable::flatten(Bundle* bundle, const sp<const ResourceFilter>&
for (size_t i = 0; i < basePackageCount; i++) {
size_t packageId = table.getBasePackageId(i);
String16 packageName(table.getBasePackageName(i));
- if (packageId > 0x01 && packageId != 0x7f &&
- packageName != String16("android")) {
+ if (packageId > 0x01 && packageId != 0x7f && packageId != 0x3f &&
+ packageName != String16("android")
+ && packageName != String16("cyanogenmod.platform")) {
libraryPackages.add(sp<Package>(new Package(packageName, packageId)));
}
}