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

Commit 116dedc3 authored by Adnan Begovic's avatar Adnan Begovic
Browse files

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

Change-Id: I63b8f3e4a938896dd21999c5b4470573a1da2e52
parent 8fec3eb3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -587,7 +587,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:
            mCurrent = mCMFrameworkStart;
            break;
        case 0x7f:
            mAppStart = mCurrent;
            break;
+5 −1
Original line number Diff line number Diff line
@@ -74,6 +74,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";
static const int   kComposedIconAsset = 128;
@@ -550,7 +551,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
+3 −1
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ namespace android {
#define IDMAP_CURRENT_VERSION   0x00000001

#define APP_PACKAGE_ID      0x7f
#define CMSDK_PACKAGE_ID    0x3f
#define SYS_PACKAGE_ID      0x01
#define OVERLAY_APP_PACKAGE_ID  0x61
#define OVERLAY_SYS_PACKAGE_ID  0x60
@@ -6068,6 +6069,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;
    mLookupTable[OVERLAY_APP_PACKAGE_ID] = OVERLAY_APP_PACKAGE_ID;
    mLookupTable[OVERLAY_SYS_PACKAGE_ID] = OVERLAY_SYS_PACKAGE_ID;
    mLookupTable[OVERLAY_COMMON_PACKAGE_ID] = OVERLAY_COMMON_PACKAGE_ID;
@@ -6502,7 +6504,7 @@ bool ResTable::isResTypeAllowed(const char* type) const {
bool ResTable::isDynamicPackageId(const uint32_t pkgId) const {
    return pkgId != APP_PACKAGE_ID && pkgId != SYS_PACKAGE_ID
            && pkgId != OVERLAY_APP_PACKAGE_ID && pkgId != OVERLAY_SYS_PACKAGE_ID
            && pkgId != OVERLAY_COMMON_PACKAGE_ID;
            && pkgId != OVERLAY_COMMON_PACKAGE_ID && pkgId != CMSDK_PACKAGE_ID;
}

status_t ResTable::removeIdmappedTypesFromPackageGroup(PackageGroup* packageGroup) const {
+3 −2
Original line number Diff line number Diff line
@@ -2776,8 +2776,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)));
        }
    }