Android Studio 查看源码编译后的字节码(java/kotlin)

我们都知道字节码是java或者kotlin源码编译后的文件,后缀名是".class",如果直接用普通文本编辑器打开是会显示乱码的,如果用Android Studio 直接打开则会自动反编译成java代码;那么如何才能正确查看到源码编译后的字节码呢?

主要有以下几种方式:

1、使用javap命令

javap命令路径:%JAVA安装路径%\jdk1.8.0_131\bin\javap
用法: javap

其中, 可能的选项包括:

命令 作用
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
-classpath 指定查找用户类文件的位置
-cp 指定查找用户类文件的位置
-bootclasspath 覆盖引导类文件的位置
//例如
>> javap -c -verbose Test.class

2、Android Studio自定义工具:

本质上还是使用javap命令

  • 打开设置路径:Android Studio > File > Settings > Tools > External Tools
  • 点击左上角"+"新增一个自定义工具
  • 输入相关信息:
字段 说明
Name 工具的名字,例如:ToByteCode
Description 工具的功能描述,例如: show java file byte code
Program 要执行的命令:$JDKPath$\bin\javap
Arguments 执行命令所添加的参数,例如:-c -verbose F i l e C l a s s FileClass FileClass
Working directory 工作目录,也就是项目编译后生成的class文件目录,例如: O u t p u t P a t h OutputPath OutputPath
  • 最后点击底部的【OK】按钮进行保存就行了
    Android Studio 查看源码编译后的字节码(java/kotlin)_第1张图片

使用方法:
Android Studio中随便打开一个java类文件,在空白地方点击鼠标【右键】,在弹出的菜单选择【External Tools】> 【ToByteCode】也就是刚才自定义工具的名字;
Android Studio就会自动到编译后的目录找到该java类对应的class文件,并执行刚才配置的命令
Android Studio 查看源码编译后的字节码(java/kotlin)_第2张图片

//执行结果
"D:\Android\Android Studio 4.0\jre\bin\javap" -c -verbose com.example.myapplication.Test
Classfile /D:/MyFile/develop/android/MyApplication/app/build/intermediates/javac/debug/classes/com/example/myapplication/Test.class
  Last modified 2021-3-13; size 1099 bytes
  MD5 checksum 5d28e3e79dc16c5f46030cc91157226b
  Compiled from "Test.java"

如果出现找不到类的错误提示,则可能该类是最近添加的还没有编译成class文件,可以到编译产物所在路径查看是否存在对应的class文件进行确认(默认路径:MyApplication\app\build\intermediates\javac\debug\classes\com\example\myapplication\Test.class);
例如:

"D:\Android\Android Studio 4.0\jre\bin\javap" -c -verbose com.example.myapplication.NewTest
错误: 找不到类: com.example.myapplication.NewTest

Process finished with exit code 1

解决的办法就是重新编译项目:Android Studio > Build > Rebuild Project
3、使用Android Studio插件

Android Studio > File > Settings > Plugins
目前没发现展示效果跟javap命令出来一样的插件,有空可以自己写一个,原理也就是利用javap命令获取结果并展示出来

4、kotlin查看字节码

  • 打开要查看的kotin文件
  • Android Studio > Tools > Kotlin> Show Kotlin Bytecode

你可能感兴趣的:(Android,Studio/Gradle,android,android,studio,java,kotlin)