V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
nl101531
V2EX  ›  Kotlin

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

  •  
  •   nl101531 · Feb 4, 2018 · 4692 views
    This topic created in 3010 days ago, the information mentioned may be changed or developed.

    原版插件是 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 replies    2018-02-05 10:03:19 +08:00
    nl101531
        1
    nl101531  
    OP
       Feb 4, 2018
    使用方式也比较简单,在 IDEA 中对着代码文件右键选择反编译即可
    ![]( http://oobu4m7ko.bkt.clouddn.com/1517730280.png?imageMogr2/thumbnail/!70p)
    ovear
        2
    ovear  
       Feb 4, 2018
    感谢 LZ
    aristotll
        3
    aristotll  
       Feb 4, 2018
    虽然觉得不错 但是这个功能不是内置的吗
    nl101531
        4
    nl101531  
    OP
       Feb 4, 2018
    @aristotll 内置的那个反编译不是很详细,基本等于没用. 或者说我没找对地方?
    aristotll
        5
    aristotll  
       Feb 4, 2018
    aristotll
        6
    aristotll  
       Feb 4, 2018
    显示图片...
    nl101531
        7
    nl101531  
    OP
       Feb 5, 2018 via Android
    @aristotll 还有这功能啊。。。。这真的不知道
    KNOX
        8
    KNOX  
       Feb 5, 2018 via Android
    点赞楼主自己写插件,但是我看你的截图感觉跟我用 AS 内置的查看 bytecode 和 decompile 功能差不多啊
    xingstar
        9
    xingstar  
       Feb 5, 2018 via Android
    很赞哦⊙∀⊙!
    nl101531
        10
    nl101531  
    OP
       Feb 5, 2018 via Android
    @KNOX 好吧,我是后端开发,没发现 IDEA 中有这个功能。所以找了个插件魔改了下。
    yzmm
        11
    yzmm  
       Feb 5, 2018
    idea 的反编译插件是用的 Fernflower 改的
    https://the.bytecode.club/showthread.php?tid=5
    http://the.bytecode.club/fernflower.txt
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2467 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 09:38 · PVG 17:38 · LAX 02:38 · JFK 05:38
    ♥ Do have faith in what you're doing.