diff options
author | Paul Duffin <paulduffin@google.com> | 2020-10-30 11:58:47 +0000 |
---|---|---|
committer | Treehugger Robot <treehugger-gerrit@google.com> | 2020-11-03 15:55:42 +0000 |
commit | 4b64f6c8c57fb6e46b94645071eb6cd0d56ea9c9 (patch) | |
tree | ddd9cbbb25f05c5208fdbb58d614f83999a2dcda /dexdump | |
parent | 021cf233a441b05fed47b3a1f64c76a9e65a9d4f (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.cc | 20 |
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; } |