summaryrefslogtreecommitdiff
path: root/dexdump
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2020-10-30 11:58:47 +0000
committerTreehugger Robot <treehugger-gerrit@google.com>2020-11-03 15:55:42 +0000
commit4b64f6c8c57fb6e46b94645071eb6cd0d56ea9c9 (patch)
treeddd9cbbb25f05c5208fdbb58d614f83999a2dcda /dexdump
parent021cf233a441b05fed47b3a1f64c76a9e65a9d4f (diff)
dexdump: fix xml output for jars containing multiple .dex files
When an input file (.jar/.zip) contains multiple dex files their xml output goes into one api element. Previously, dexdump emitted an api element per input. Add a test that generates a multi-dex jar and checks the output. Bug: 172042691 Test: art/test/dexdump/run-all-tests Change-Id: I28b60d5a4b536d5ed6feb05c2476d58c00a33b68
Diffstat (limited to 'dexdump')
-rw-r--r--dexdump/dexdump.cc20
1 files changed, 10 insertions, 10 deletions
diff --git a/dexdump/dexdump.cc b/dexdump/dexdump.cc
index 8415260ea4..1d1eab8f01 100644
--- a/dexdump/dexdump.cc
+++ b/dexdump/dexdump.cc
@@ -1830,11 +1830,6 @@ static void processDexFile(const char* fileName,
dumpFileHeader(pDexFile);
}
- // Open XML context.
- if (gOptions.outputFormat == OUTPUT_XML) {
- fprintf(gOutFile, "<api>\n");
- }
-
// Iterate over all classes.
char* package = nullptr;
const u4 classDefsSize = pDexFile->GetHeader().class_defs_size_;
@@ -1857,11 +1852,6 @@ static void processDexFile(const char* fileName,
fprintf(gOutFile, "</package>\n");
free(package);
}
-
- // Close XML context.
- if (gOptions.outputFormat == OUTPUT_XML) {
- fprintf(gOutFile, "</api>\n");
- }
}
/*
@@ -1905,9 +1895,19 @@ int processFile(const char* fileName) {
if (gOptions.checksumOnly) {
fprintf(gOutFile, "Checksum verified\n");
} else {
+ // Open XML context.
+ if (gOptions.outputFormat == OUTPUT_XML) {
+ fprintf(gOutFile, "<api>\n");
+ }
+
for (size_t i = 0, n = dex_files.size(); i < n; i++) {
processDexFile(fileName, dex_files[i].get(), i, n);
}
+
+ // Close XML context.
+ if (gOptions.outputFormat == OUTPUT_XML) {
+ fprintf(gOutFile, "</api>\n");
+ }
}
return 0;
}