aapt2: read the type spec and infer if sparsely packed

This commit is contained in:
Connor Tumbleson 2018-02-15 18:04:23 -05:00
parent 88987e60b3
commit 0827b2b7a2

View File

@ -151,7 +151,7 @@ public class ARSCDecoder {
}
}
private ResTypeSpec readTableTypeSpec() throws AndrolibException, IOException {
private void readTableTypeSpec() throws AndrolibException, IOException {
mTypeSpec = readSingleTableTypeSpec();
addTypeSpec(mTypeSpec);
@ -162,6 +162,12 @@ public class ARSCDecoder {
resTypeSpec = readSingleTableTypeSpec();
addTypeSpec(resTypeSpec);
type = nextChunk().type;
// We've detected sparse resources, lets record this so we can rebuild in that same format (sparse/not)
// with aapt2. aapt1 will ignore this.
if (! mResTable.getSparseResources()) {
mResTable.setSparseResources(true);
}
}
while (type == Header.TYPE_TYPE) {
@ -177,8 +183,6 @@ public class ARSCDecoder {
addMissingResSpecs();
}
return mTypeSpec;
}
private ResTypeSpec readSingleTableTypeSpec() throws AndrolibException, IOException {