diff options
-rw-r--r-- | cmds/idmap/inspect.cpp | 3 | ||||
-rw-r--r-- | libs/androidfw/ResourceTypes.cpp | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/cmds/idmap/inspect.cpp b/cmds/idmap/inspect.cpp index f6afc85..63756a5 100644 --- a/cmds/idmap/inspect.cpp +++ b/cmds/idmap/inspect.cpp @@ -223,7 +223,8 @@ namespace { } status_t parse_data(IdmapBuffer& buf, const AssetManager& am) { - const uint32_t packageId = am.getResources().getBasePackageId(0); + const ResTable& rt = am.getResources(); + const uint32_t packageId = rt.getBasePackageId(rt.getBasePackageCount() - 1); uint16_t data16; status_t err = buf.nextUint16(&data16); diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp index 62aabb1..585f4a2 100644 --- a/libs/androidfw/ResourceTypes.cpp +++ b/libs/androidfw/ResourceTypes.cpp @@ -6379,8 +6379,10 @@ status_t ResTable::createIdmap(const ResTable& overlay, KeyedVector<uint8_t, IdmapTypeMap> map; - // overlaid packages are assumed to contain only one package group - const PackageGroup* pg = mPackageGroups[0]; + // Overlaid packages are assumed to contain only one package group or two package group + // as one is "system package(android)", and another is "application package". So we need + // to use the last package group to create idmap. + const PackageGroup* pg = mPackageGroups[mPackageGroups.size() - 1]; // starting size is header *outSize = ResTable::IDMAP_HEADER_SIZE_BYTES; |