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

本文介绍了多种查看Java和Kotlin源码编译后字节码的方法。包括使用javap命令,通过Android Studio自定义工具配置javap命令,以及查看Kotlin字节码的内置功能。详细步骤和示例帮助读者理解如何操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

主要有以下几种方式:

1、使用javap命令

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

其中, 可能的选项包括:

命令作用
-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 FileClassFileClassFileClass
Working directory工作目录,也就是项目编译后生成的class文件目录,例如:OutputPathOutputPathOutputPath
  • 最后点击底部的【OK】按钮进行保存就行了
    在这里插入图片描述

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

//执行结果
"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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值