美文网首页
freeline预研

freeline预研

作者: BooQin | 来源:发表于2018-07-21 21:12 被阅读37次

    前言

    本文介绍了freeline的相关的使用和总结,关于具体的使用,在 github上的freeline相关文档 上已经写的很详细了,这里做了些总结。

    简介

    Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。

    Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。

    Freeline能够为Android开发者节省很多喝杯咖啡的时间 : )

    必要环境

    Freeline的使用依赖于python2.7,不同与Linux/Mac,Windows系统需要手动搭建python环境,注意是2.7+的版本,而不支持python3.0环境,因为这两大版本python在语法上不兼容!!! 安装python2.7的介绍请点这里

    关于使用

    添加依赖

    第一步

    在Android Studio中的project的build.gradle里添加依赖,如下:

        dependencies {
            ……
            classpath 'com.antfortune.freeline:gradle:0.8.4'
        }
    

    第二步

    在主module中添加应用 freeline 插件的依赖:

        apply plugin: 'com.antfortune.freeline'
    
        android {
            ...
        }
    

    第三步

    如果进行了多渠道打包的配置,就需要对freeline进行如下配置,不然会导致编译失败:

        productFlavors {
            umeng {}
        }
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
    
        freeline {
            hack true
            productFlavor 'umeng'   //指定flavor
        }
    

    第四步

    在命令行执行以下命令来下载 freeline 的 python 和二进制依赖。

    • Windows[CMD]: gradlew initFreeline -Pmirro
    • Linux/Mac: ./gradlew initFreeline -Pmirro

    运行freeline

    使用FreeLine有两种方法,一种是通过android studio添加插件构建来实现一键编译功能,另外一种是中间通过python命令行执行:

    插件

    在 Android Studio 中,通过以下路径:

    • MacOS

    Android Studio → Preferences... → Plugins → Browse repositories...

    • Windows 和 Linux

    File → Settings... → Plugins → Browse repositories...

    并搜索“freeline”,并安装。


    image

    python指令

    如下例子:

    git clone git@github.com:alibaba/freeline.git
    cd freeline/sample
    ./gradlew initFreeline
    python freeline.py
    

    gitignore

    参考freeline在github上的ignore文件,需要手动在gitignore中添加以下几个字段:

    /.freeline_cache
    *.pyc
    

    实际效果

    以下时miss项目中使用freeline进行增量编译的使用效果,首先打开app,进入到二级页面(话题详情页),通过代码修改话题颜色,使用freeline部署,可以看到直接更新了当前activity。


    freeline_test.gif

    潜在问题

    阿里团队已将freeline开源,在github中可以查看其源码,截至17年1月12,一共存在575个issue,其中549个closed,26个open,大致看了下issue,总结了一些已修复的常见issue以及一些未closed的issue:

    新版本的支持:
      比如sdk中support:design:25.1.0,会导致aapt报错

    机型兼容问题:
      issue已修复的bug中,存在个别机型如小米,三星,一加等增量编译出错的情况。

    resource相关的:
      可能出现资源编译后错乱,打包时出错,增量报错等问题。并且不支持删除带 id 的资源,否则可能导致 aapt 编译出错

    多设备同时连接PC:
      freeline暂不支持多个设备同时连接PC端。也就是说无法开模拟器的情况下同时连接测试机。

    其它:
      在使用过程中,存在增量编译无反应的情况。同时不支持debug模式

    总结

    freeline确实能在开发工程中很大的提高开发效率,在你修改java代码或相关xml布局时,通过freeline的增量编译,可以很快的部署到目标设备进行运行,并会在部署完成后类似刷新浏览器一样刷新当前页面。但是其缺少对debug模式的支持,因此你无法进行断点测试,必须重新使用gradlew来进行构建(当然log党可以忽略)。在实际使用的过程中,第一次运行freeline时,会进行全编译,比较耗时,以miss为例,基本维持在100s左右,但接下来使用就可以进行秒级编译,并且不会重开设备里的app,而是直接刷新当前的aticity,所以在开发效率上比直接Gradle有了很大的提升,不过在使用Gradle构建进后,会导致再次使用freeline时进行重新全编译,因此两者切换会导致额外的开销,建议在不得不切换的情况下(如使用debug模式),请尽量使用一种编译方式来进行开发,以达到提高效率的目的。

    相关文章

      网友评论

          本文标题:freeline预研

          本文链接:https://www.haomeiwen.com/subject/pldkmftx.html