美文网首页
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预研

    前言 本文介绍了freeline的相关的使用和总结,关于具体的使用,在 github上的freeline相关文档 ...

  • 直流分盘控制器

    预研中……

  • Protobuf On HTTP 技术预研 (附代码)

    Protobuf 技术预研 Protobuf 技术预研一、背景二、Protobuf说明2.1 什么是Protobu...

  • Android 秒级编译方案-Freeline安装使用

    Android 秒级编译方案-Freeline安装使用 什么是Freeline? Freeline是由蚂蚁聚宝An...

  • FreeLine使用指南

    FreeLine 阿里Gradle加速使用指南。 FreeLine介绍 Freeline是由阿里巴巴蚂蚁聚宝And...

  • FreeLine使用入门

    FreeLine使用入门 本文档参考Freeline官方使用说明 简介 Freeline是由蚂蚁聚宝Android...

  • NativeScript 预研

    NativeScript是最近推出的一个跨平台解决方案,可以让你可以用JavaScript来直接写Android、...

  • 技术预研

    只有预研那些看起来没啥卵子用的东西,才能在这些东西正儿八经有用的时候,快速跟进。

  • SiriKit预研

    一、SiriKit介绍 Siri是一款苹果 iOS 系统提供的智能语音助手软件,它的全名是 Speech Inte...

  • Ar预研

    1.业务背景: Ar技术越来越火。想利用Ar的特性做一些事情。希望把口袋撸猫中的宠物Ar化。(个人不太成熟的想法)...

网友评论

      本文标题:freeline预研

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