本文来自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 支持的热更新情况:
Java | drawable, layout, etc. | res/values | native so | |
---|---|---|---|---|
add | √ | √ | √ | √ |
change | √ | √ | √ | √ |
remove | √ | √ | x | - |
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打包前后的差别:
打包前
打包后:
表明:代码编译后,进行了自动优化。
指令重排指多线程,共同执行一个局部代码时,产生不确定的执行结果。