给学习 kotlin 以及 Java 的小伙伴提供的 IDEA 反编译插件.

2018-02-04 15:43:47 +08:00
 nl101531

原版插件是 ASM Bytecode Outline. 这款插件翻译成字节码指令,看起来比较晕.个人改了一个版本(没有提交到 JB 仓库,需要自己去 github 下载),加入了 cfr decompile 选项,看起来更加清晰.

举个例子

kotlin 代码

data class TableModel(val tableName: String,
                      val columns: List<ColumnModel>) {
}

cfr decompile 反编译后则是,是不是一下子就明白 data 的作用了呢

public final class TableModel {
    @NotNull
    private final String tableName;
    @NotNull
    private final List<ColumnModel> columns;

    @NotNull
    public final String getTableName() {
        return this.tableName;
    }

    @NotNull
    public final List<ColumnModel> getColumns() {
        return this.columns;
    }

    public TableModel(@NotNull String tableName, @NotNull List<ColumnModel> columns) {
        Intrinsics.checkParameterIsNotNull((Object)tableName, (String)"tableName");
        Intrinsics.checkParameterIsNotNull(columns, (String)"columns");
        this.tableName = tableName;
        this.columns = columns;
    }

    @NotNull
    public final String component1() {
        return this.tableName;
    }

    @NotNull
    public final List<ColumnModel> component2() {
        return this.columns;
    }
    .... 等等

插件给需要的朋友:

https://github.com/mrdear/asm-bytecode-intellij

3885 次点击
所在节点    Kotlin
11 条回复
nl101531
2018-02-04 15:45:11 +08:00
使用方式也比较简单,在 IDEA 中对着代码文件右键选择反编译即可
![]( http://oobu4m7ko.bkt.clouddn.com/1517730280.png?imageMogr2/thumbnail/!70p)
ovear
2018-02-04 16:04:08 +08:00
感谢 LZ
aristotll
2018-02-04 21:07:18 +08:00
虽然觉得不错 但是这个功能不是内置的吗
nl101531
2018-02-04 21:14:59 +08:00
@aristotll 内置的那个反编译不是很详细,基本等于没用. 或者说我没找对地方?
aristotll
2018-02-04 22:39:06 +08:00
aristotll
2018-02-04 22:40:02 +08:00
显示图片...
nl101531
2018-02-05 08:51:45 +08:00
@aristotll 还有这功能啊。。。。这真的不知道
KNOX
2018-02-05 08:54:37 +08:00
点赞楼主自己写插件,但是我看你的截图感觉跟我用 AS 内置的查看 bytecode 和 decompile 功能差不多啊
xingstar
2018-02-05 09:02:41 +08:00
很赞哦⊙∀⊙!
nl101531
2018-02-05 09:24:39 +08:00
@KNOX 好吧,我是后端开发,没发现 IDEA 中有这个功能。所以找了个插件魔改了下。
yzmm
2018-02-05 10:03:19 +08:00
idea 的反编译插件是用的 Fernflower 改的
https://the.bytecode.club/showthread.php?tid=5
http://the.bytecode.club/fernflower.txt

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/428355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX