diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp index 42715f9c35922..8d35eeec2a933 100644 --- a/tools/aapt2/ResourceParser.cpp +++ b/tools/aapt2/ResourceParser.cpp @@ -1038,6 +1038,13 @@ bool static ParseGroupImpl(xml::XmlPullParser* parser, ParsedResource* out_resou continue; } + if (maybe_name.value().substr(0, std::strlen("removed_")) == "removed_") { + // Skip resources that have been removed from the framework, but leave a hole so that + // other staged resources don't shift and break apps previously compiled against them + next_id.id++; + continue; + } + ParsedResource& entry_res = out_resource->child_resources.emplace_back(ParsedResource{ .name = ResourceName{{}, *parsed_type, maybe_name.value().to_string()}, .source = item_source,