AAPT: Handle gaps in resources when building splits

am: 26ae640c34

Change-Id: Ieb081dbc7e451415c2ada4fb7ce18bbfc6ea0fba
This commit is contained in:
Adam Lesinski
2016-08-17 21:51:13 +00:00
committed by android-build-merger

View File

@@ -4860,24 +4860,39 @@ void ResourceTable::getDensityVaryingResources(
const Vector<sp<Type> >& types = mOrderedPackages[p]->getOrderedTypes(); const Vector<sp<Type> >& types = mOrderedPackages[p]->getOrderedTypes();
const size_t typeCount = types.size(); const size_t typeCount = types.size();
for (size_t t = 0; t < typeCount; t++) { for (size_t t = 0; t < typeCount; t++) {
const Vector<sp<ConfigList> >& configs = types[t]->getOrderedConfigs(); const sp<Type>& type = types[t];
if (type == NULL) {
continue;
}
const Vector<sp<ConfigList> >& configs = type->getOrderedConfigs();
const size_t configCount = configs.size(); const size_t configCount = configs.size();
for (size_t c = 0; c < configCount; c++) { for (size_t c = 0; c < configCount; c++) {
const sp<ConfigList>& configList = configs[c];
if (configList == NULL) {
continue;
}
const DefaultKeyedVector<ConfigDescription, sp<Entry> >& configEntries const DefaultKeyedVector<ConfigDescription, sp<Entry> >& configEntries
= configs[c]->getEntries(); = configList->getEntries();
const size_t configEntryCount = configEntries.size(); const size_t configEntryCount = configEntries.size();
for (size_t ce = 0; ce < configEntryCount; ce++) { for (size_t ce = 0; ce < configEntryCount; ce++) {
const sp<Entry>& entry = configEntries.valueAt(ce);
if (entry == NULL) {
continue;
}
const ConfigDescription& config = configEntries.keyAt(ce); const ConfigDescription& config = configEntries.keyAt(ce);
if (AaptConfig::isDensityOnly(config)) { if (AaptConfig::isDensityOnly(config)) {
// This configuration only varies with regards to density. // This configuration only varies with regards to density.
const Symbol symbol( const Symbol symbol(
mOrderedPackages[p]->getName(), mOrderedPackages[p]->getName(),
types[t]->getName(), type->getName(),
configs[c]->getName(), configList->getName(),
getResId(mOrderedPackages[p], types[t], getResId(mOrderedPackages[p], types[t],
configs[c]->getEntryIndex())); configList->getEntryIndex()));
const sp<Entry>& entry = configEntries.valueAt(ce);
AaptUtil::appendValue(resources, symbol, AaptUtil::appendValue(resources, symbol,
SymbolDefinition(symbol, config, entry->getPos())); SymbolDefinition(symbol, config, entry->getPos()));
} }