前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 配置Freeline教程

Android 配置Freeline教程

作者头像
xiangzhihong
发布2018-02-06 12:11:34
1.2K0
发布2018-02-06 12:11:34
举报
文章被收录于专栏:向治洪向治洪

Freeline简介

Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,另外在class及dex,resources层面作了相应缓存策略,做到真正增量开发,另外引入并优化buck的部分加速组件dx,DexMerger,资源编译方面,深入改造了Aapt资源编译流程,当资源发生改变时候,秒级完成增量包编译,其中增量包仅含最小的变更集合(10Kb~数百Kb内),后期也被运用到线上进行资源/代码动态替换。相比目前instant-run,buck,layoutcast等方案快数倍速度。

安装python环境

打开官网https://www.python.org/ 点击下载安装 注意:freeline只支持2.7.X版本

配置高级环境变量,PATH结尾加入:

代码语言:javascript
复制
;C:\Python27

运行python -v,如果出现版本号等信息,说明安装成功。

gradle 环境配置

1,打开gradle官网:https://gradle.org/,下载安装。

这里写图片描述
这里写图片描述

将下载以后得到的 gradle-2.14-all.zip 文件夹解压到我们电脑磁盘上固定存放软件的位置。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

使用命令查看gradle是否安装成功。

代码语言:javascript
复制
gradle -v

Freeline配置

Freeline的特性:

  • 支持调试
  • 系统最低支持到api level 9
  • 支持标准的多模块Gradle工程的增量构建
  • 并发执行增量编译任务
  • 进程级别异常隔离机制
  • 支持so动态更新
  • 支持resource.arsc缓存
  • 支持retrolambda
  • 支持DataBinding
  • 支持各类主流注解库
  • 支持Windows,Linux,Mac平台

当然每个事物都有自己的不足,现在已经Freeline的一些不足:

  • 第一次增量资源编译的时候可能会有点慢
  • 不支持删除带id的资源,否则可能导致aapt编译出错
  • 暂不支持抽象类的增量编译
  • 不支持开启 Jack 编译
  • 不支持 Kotlin/Groovy/Scala

集成步骤

1,在项目level的build.gradle中添加插件依赖:

代码语言:javascript
复制
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.antfortune.freeline:gradle:0.8.6' //最新版本,请参考freeline
    }
}

2,在项目主module的build.gradle中应用freeline插件的依赖:

代码语言:javascript
复制
apply plugin: 'com.antfortune.freeline'

android {
    ...
}

dependencies{
   ...
  debugCompile 'com.antfortune.freeline:runtime:0.8.1'
  releaseCompile 'com.antfortune.freeline:runtime-no-op:0.8.1'
  testCompile 'com.antfortune.freeline:runtime-no-op:0.8.1'
}

3,安装Python、并配置系统环境变量 。因为Freeline是用python写的,下面的的所有操作,包括编译等都要依赖python,所以我们要安装python,并且配置系统环境变量。

4,下载安装Freeline

这里所说的安装freeline是安装的Android Studio 的freeline插件。安装完成之后会在工具栏看到freeline的图标。

这里写图片描述
这里写图片描述

安装好了python,然后在Android Studio中打开命令行,输入命令:

代码语言:javascript
复制
gradlew initFreeline

安装好后,项目文件结构如图。

这里写图片描述
这里写图片描述

5,运行项目

不过在之前需要重启下电脑,启动相关环境配置。第一次全量编译,在命令行输入:

代码语言:javascript
复制
python freeline.py -f

如果我们后期修改了代码,秒秒钟就可以热更新到手机:

代码语言:javascript
复制
python freeline.py
代码语言:javascript
复制
python freeline.py -d 

注:当然你也可以直接使用Freeline插件为我们提供的按钮界面。对就是左边栏,这样就省去了敲命令的烦恼。

这里写图片描述
这里写图片描述

6,Android Studio Freeline插件

这里写图片描述
这里写图片描述

附:常用命令帮助

python freeline.py -f —— cleanBuild 强制执行一次 clean build python freeline.py -d —— 调试 打开debug模式 python freeline.py -h —— 帮助 显示帮助信息并退出 python freeline.py -v —— 版本 显示版本信息 python freeline.py -w —— 等待 让应用程序等待 debugger python freeline.py -a —— 全部 在所有工程上强制执行clean build 并执行-f全量编译 python freeline.py -c —— 清空 清空缓存目录和工作空间 python freeline.py -i —— 初始化 对工程进行进行freeline初始化配置

常见报错

flavor报错

异常信息:

代码语言:javascript
复制
Missing the productFlavor configuration?
You can try to add productFlavor to freeline DSL, for example:

freeline { 
      hack true 
      productFlavor 'your-flavor' 
}

Then re-run python freeline.py again.

其实信息已经明确说明了问题的原因,主要是由于gradle配置多渠道的原因导致的,加入下面标注的,然后Sync Now即可。解决的方法是在build加入freeline配置:

代码语言:javascript
复制
 freeline {
                hack true
                productFlavor '360'   
    }

异常信息如下:

代码语言:javascript
复制
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':checkBeforeCleanBuild'.
>  invalid productFlavor : assembleHuawei
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get 

more log output.
[ERROR] --------------------------------------------------------
[ERROR] freeline failed when read project info with script: gradlew.bat -q 
checkBeforeCleanBuild

主要是由于找不到指定的flavor,那么将下面的flavor指定为gradle里声明的就可以了,比如baidu、_360等(备注:看你gradle里productFlavors声明的渠道名,指定其中1个)

参考:freeline官方文档

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Freeline简介
  • 安装python环境
  • gradle 环境配置
  • Freeline配置
    • 集成步骤
    • 常见报错
      • flavor报错
      相关产品与服务
      腾讯云代码分析
      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档