AAPT: Handle gaps in resources when building splits
am: 26ae640c34
Change-Id: Ieb081dbc7e451415c2ada4fb7ce18bbfc6ea0fba
This commit is contained in:
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user