Android常用构建工具介绍

 

                         本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!

本篇包含:Freeline、JFrog、Jenkins的介绍。

Freeline:

Instant Run为我们提供了增量更新的方式,支持 gradle2.0和Android4.0以上版本,让构建项目变的快速,同时由于multiDex出现,增量更新也变的简单,但现实状况是Studio编译依然卡卡。

Facebook的Buck是不错的,但它只支持Linux开发机;而Alibaba 开源的Freeline却可以在Windows机器上使用,根据依赖关系充分利用缓   存最少编译,并开启SocketServer保证crash同时也可以进行编译,最终实现全量编译和增量编译同时进程,提高2-3倍的编译速度。   

注意事项

1、只能使用2.2以上的gradle版本和python2.7及以下版本,配置好环境变量

2、使用jcenter编译而非mavenCenter,因为某些gradle后者没有

3、此文件里的gradle版本需要更换,csdn限制只能传80M以内的文件,大家只好到官网下载,地址:gradle3.3

4、

主项目的build.gradle加入如下内容:

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

 

apply plugin: 'com.antfortune.freeline'

 

dependencies {
    compile 'com.antfortune.freeline:gradle:0.8.5'
}

目前最高版本是0.8.5

 

5、配置完,在Android Studio的Terminal里执行如下命令,代表从国内镜像下载,要快的多。

gradlew initFreeline -Pmirror

其他特色Features

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

 

以下列表为 Freeline 支持的热更新情况:

 Javadrawable, layout, etc.res/valuesnative so
add
change
removex-

Freeline 已经分别在 API 17,19,22,23 的 Android 模拟器、Android 6.0 Nexus 6P 以及 Android 4.4 锤子手机上经过测试。如果想要充分体验 Freeline 增量编译的速度的话,最好使用 Android 5.0+ 的设备。

限制Limitations

 

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

官方地址:https://github.com/alibaba/freeline/

JFrog构建:

用法,把独立的模块分享成一个子项目,编译成aar使用。

作用是

1、依赖子项目,可以加速主项目的编译速度

2、独立子项目,方便专人维护和升级

3、做基础配置的构建,让主项目只做精力。

网上教程比较多,我就不再写了,推荐方案

远程构建:https://www.jianshu.com/p/37ac9e7e03f3

本地构建:http://blog.aha-nstd.com/2017/03/08/set-up-a-local-jfrog-artifactory/

构建常见问题:

1、409错误,conflict,已经存在此版本号,需要升级一下版本号;

2、删除老版本号,继续上传,结果依赖还是老版本号的,删除本地缓存无效,那么也要升级一下版本号;

3、透传依赖,官方不推荐使用,因为子项目也可能依赖同样的第三方项目,如果Api不同,则容易引发系统崩溃,方案是自己编写pom脚本,为gralde的project选项,增加dependencies-denpendency依赖。

 

Jenkins构建:

用法,通过git拉取相应分支的代码,根据脚本打出相应渠道、类型等手机应用包。

作用是

1、解放了开发,防止一边写代码,一边打包的场景出现,影响开发速度和质量;

2、分离了业务,新功能和解决Bug归"RD",打包测试归"QA",界面验收归"UE",功能验收和发布归“PM”;

可本地构建(自己电脑 ),也可远程构建(放公司服务器)。

推荐教程:http://blog.csdn.net/mabeijianxi/article/details/52680283

 

Apk打包前后的差别:

打包前

打包后:

表明:代码编译后,进行了自动优化。

指令重排指多线程,共同执行一个局部代码时,产生不确定的执行结果。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘兆贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值