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

Commit 64551b2e authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

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).
parent c650bf58
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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,
+11 −0
Original line number Diff line number Diff line
@@ -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