Fix aapt to be able to add configs from overlays.

Fixes a bug where any new configurations introduced in an overlay
would be half-way ignored (enough to result in a broken .apk).
This commit is contained in:
Dianne Hackborn
2009-08-15 00:00:33 -07:00
parent c650bf583d
commit 64551b2e0e
2 changed files with 13 additions and 0 deletions

View File

@@ -482,6 +482,8 @@ public:
const sp<AaptFile>& file,
const String8& resType);
void addGroupEntry(const AaptGroupEntry& entry) { mGroupEntries.add(entry); }
ssize_t slurpFromArgs(Bundle* bundle);
virtual ssize_t slurpFullTree(Bundle* bundle,

View File

@@ -472,11 +472,22 @@ static bool applyFileOverlay(const sp<AaptAssets>& assets,
// didn't find a match fall through and add it..
}
baseGroup->addFile(overlayFiles.valueAt(overlayGroupIndex));
assets->addGroupEntry(overlayFiles.keyAt(overlayGroupIndex));
}
} else {
// this group doesn't exist (a file that's only in the overlay)
baseSet->add(overlaySet->keyAt(overlayIndex),
overlaySet->valueAt(overlayIndex));
// make sure all flavors are defined in the resources.
sp<AaptGroup> overlayGroup = overlaySet->valueAt(overlayIndex);
DefaultKeyedVector<AaptGroupEntry, sp<AaptFile> > overlayFiles =
overlayGroup->getFiles();
size_t overlayGroupSize = overlayFiles.size();
for (size_t overlayGroupIndex = 0;
overlayGroupIndex<overlayGroupSize;
overlayGroupIndex++) {
assets->addGroupEntry(overlayFiles.keyAt(overlayGroupIndex));
}
}
}
// this overlay didn't have resources for this type