Preserve names of parameters and locals in dex2jar #384
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm using dex2jar + CFR to extract Java sources from Android 11's framework.jar (AFAICT they didn't release the Java sources for the betas yet -- Please prove me wrong)
Unfortunately, the source code doesn't preserve variable names and, most importantly, method parameter names.
But when examining the output of dex2smali, I noticed parameter names were there, show with the
.param p#, "name"
syntax.This PR copies parameter and local variable names from debug section in into java bytecode, using both
MethodVisitor.visitParameter
(Which AFAICT translates into Java 8's MethodParameters attribute) andMethodVisitor.visitLocalVariable
(Which translates into LocalVariableTable attribute).Those are intended for debugging, but are also used by decompilers to assign names
However there are a few issues: