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

Commit 5d0d089a authored by Adnan Begovic's avatar Adnan Begovic
Browse files

androidfw: Declare and load cmsdk resource package w/ id.

Change-Id: I63b8f3e4a938896dd21999c5b4470573a1da2e52
parent 62a8f713
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
            }

+7 −0
Original line number Diff line number Diff line
@@ -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;
+5 −1
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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) \
+3 −2
Original line number Diff line number Diff line
@@ -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)));
        }
    }