Android最好的编译插件?Freeline和JRebel对比分析

    科技2022-07-14  129

           公司有个原生项目,Java代码达到6M多,是从2016年开始写的代码,用的gradle版本比较低,res资源也比较多,每次代码修改,编译时间都再半分钟以上,这让我头疼不已。我为此做了两件事:

    1,minify工程,把框架抽出来,需要迭代的功能往里加

    2,寻找快速编译插件,目前发现两款插件,一款是阿里的Freeline,一款是JRebel。

    现在就来说这两款插件的特点吧

    Freeline:

    java代码修改后能瞬间响应,真正秒级编译

    res文件layout文件编辑,需要重新编译资源,否则报错

    使用过程:

    1,python 2.7版本安装,安装好后需要加入环境变量

    2,在www.plugins.jetbrains下载Freeline插件(studio没有搜到)

    3,根目录的build.gradle,加入

    repositories { jcenter() } dependencies { classpath 'com.antfortune.freeline:gradle:0.8.8' }

    4,app下的build.gradle加入

    apply plugin: 'com.antfortune.freeline' android { ... //关键 freeline { hack true //注意这里的XXX替换掉 productFlavor "XXX" autoDependency false } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') //关键 compile 'com.antfortune.freeline:runtime:0.8.8' }

    }

    5,Application加入

    FreelineCore.init(this,this);

    6,在android工程根目录,Windows 输入gradlew initFreeline,Mac/Linux 输入./gradlew initFreeline,此时会进行一次长时间的       全量编译

    7,修改java代码后,输入python freeline.py即可热重载

    8,修改res下代码,建议clean后重编代码然后再次initFreeline

         python freeline.py -c && gradlew compileDebugSources && python freeline.py

    9,如果要回到原始的构建方式,需要clean工程后运行

         gradlew clean

    Freeline使用体验:

    优点:

    1,java代码修改后急速编译

    2,所有机型都能用

    缺点:

    1,代码侵入性强

    2,配置麻烦

    3,res无法热重载

     

    JRebel

    直接到Settings->Plubins去安装即可

    使用方法有手就行,只要操作两个按钮,一个是初次启动,一个是apply changes,热重载

    JRebel使用体验:

    优点:

    1,代码无侵入性

    2,无需配置

    3,res热重载效率高

    缺点:

    1,java修改重载效率比Freeline低

    2,部分机型因为无法Instant run,不能用JRebel

    结论:如果res无需修改或者小改,主要修改java逻辑,可以用Freeline

    如果经常修改res,还是用JRebel吧.

     

     

     

    Processed: 0.014, SQL: 8