V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nl101531
V2EX  ›  Kotlin

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

  •  
  •   nl101531 · 2018-02-04 15:43:47 +08:00 · 4056 次点击
    这是一个创建于 2484 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原版插件是 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

    11 条回复    2018-02-05 10:03:19 +08:00
    nl101531
        1
    nl101531  
    OP
       2018-02-04 15:45:11 +08:00
    使用方式也比较简单,在 IDEA 中对着代码文件右键选择反编译即可
    ![]( http://oobu4m7ko.bkt.clouddn.com/1517730280.png?imageMogr2/thumbnail/!70p)
    ovear
        2
    ovear  
       2018-02-04 16:04:08 +08:00
    感谢 LZ
    aristotll
        3
    aristotll  
       2018-02-04 21:07:18 +08:00
    虽然觉得不错 但是这个功能不是内置的吗
    nl101531
        4
    nl101531  
    OP
       2018-02-04 21:14:59 +08:00
    @aristotll 内置的那个反编译不是很详细,基本等于没用. 或者说我没找对地方?
    aristotll
        5
    aristotll  
       2018-02-04 22:39:06 +08:00
    aristotll
        6
    aristotll  
       2018-02-04 22:40:02 +08:00
    显示图片...
    nl101531
        7
    nl101531  
    OP
       2018-02-05 08:51:45 +08:00 via Android
    @aristotll 还有这功能啊。。。。这真的不知道
    KNOX
        8
    KNOX  
       2018-02-05 08:54:37 +08:00 via Android
    点赞楼主自己写插件,但是我看你的截图感觉跟我用 AS 内置的查看 bytecode 和 decompile 功能差不多啊
    xingstar
        9
    xingstar  
       2018-02-05 09:02:41 +08:00 via Android
    很赞哦⊙∀⊙!
    nl101531
        10
    nl101531  
    OP
       2018-02-05 09:24:39 +08:00 via Android
    @KNOX 好吧,我是后端开发,没发现 IDEA 中有这个功能。所以找了个插件魔改了下。
    yzmm
        11
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2786 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:43 · PVG 22:43 · LAX 06:43 · JFK 09:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.