AAPT: Don't keep processing files that failed to be added
AAPT will continue ahead without reporting an error if a file failed to be added to the ResourceTable. This would cause crashes later when the file was assumed to be present. Bug:30200166 Change-Id: Ieb2daf97ccf0345153b6f4598d130a38d108c937
This commit is contained in:
@@ -808,13 +808,13 @@ static void checkNinePatchSerialization(Res_png_9patch* inPatch, void* data)
|
||||
assert(outPatch->paddingTop == inPatch->paddingTop);
|
||||
assert(outPatch->paddingBottom == inPatch->paddingBottom);
|
||||
for (int i = 0; i < outPatch->numXDivs; i++) {
|
||||
assert(outPatch->xDivs[i] == inPatch->xDivs[i]);
|
||||
assert(outPatch->getXDivs()[i] == inPatch->getXDivs()[i]);
|
||||
}
|
||||
for (int i = 0; i < outPatch->numYDivs; i++) {
|
||||
assert(outPatch->yDivs[i] == inPatch->yDivs[i]);
|
||||
assert(outPatch->getYDivs()[i] == inPatch->getYDivs()[i]);
|
||||
}
|
||||
for (int i = 0; i < outPatch->numColors; i++) {
|
||||
assert(outPatch->colors[i] == inPatch->colors[i]);
|
||||
assert(outPatch->getColors()[i] == inPatch->getColors()[i]);
|
||||
}
|
||||
free(newData);
|
||||
}
|
||||
|
||||
@@ -326,13 +326,18 @@ static status_t makeFileResources(Bundle* bundle, const sp<AaptAssets>& assets,
|
||||
}
|
||||
String8 resPath = it.getPath();
|
||||
resPath.convertToResPath();
|
||||
table->addEntry(SourcePos(it.getPath(), 0), String16(assets->getPackage()),
|
||||
status_t result = table->addEntry(SourcePos(it.getPath(), 0),
|
||||
String16(assets->getPackage()),
|
||||
type16,
|
||||
baseName,
|
||||
String16(resPath),
|
||||
NULL,
|
||||
&it.getParams());
|
||||
assets->addResource(it.getLeafName(), resPath, it.getFile(), type8);
|
||||
if (result != NO_ERROR) {
|
||||
hasErrors = true;
|
||||
} else {
|
||||
assets->addResource(it.getLeafName(), resPath, it.getFile(), type8);
|
||||
}
|
||||
}
|
||||
|
||||
return hasErrors ? STATUST(UNKNOWN_ERROR) : NO_ERROR;
|
||||
@@ -1370,6 +1375,10 @@ status_t buildResources(Bundle* bundle, const sp<AaptAssets>& assets, sp<ApkBuil
|
||||
}
|
||||
}
|
||||
|
||||
if (hasErrors) {
|
||||
return UNKNOWN_ERROR;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Assignment of resource IDs and initial generation of resource table.
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
@@ -4521,6 +4521,7 @@ bool ResourceTable::shouldGenerateVersionedResource(
|
||||
const ConfigDescription& sourceConfig,
|
||||
const int sdkVersionToGenerate) {
|
||||
assert(sdkVersionToGenerate > sourceConfig.sdkVersion);
|
||||
assert(configList != NULL);
|
||||
const DefaultKeyedVector<ConfigDescription, sp<ResourceTable::Entry>>& entries
|
||||
= configList->getEntries();
|
||||
ssize_t idx = entries.indexOfKey(sourceConfig);
|
||||
|
||||
Reference in New Issue
Block a user