aapt2: read the type spec and infer if sparsely packed
@@ -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 {
