前言
随着项目版本的不断迭代,体积也不断地变大,现在每次编译都得花上十几分钟的时间去等待,折腾各种优化方案仍旧对编译时间没有任何太大的改善。对着这低配置的电脑,每天都真够无奈的,一个不小心Android Studio就卡死或者电脑死机了,感叹编译都这么难吗? 问题终归得解决,自从引入了蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队在Android平台上的量身定做的一个基于动态替换的编译方案 ———— Freeline,真的是6得飞起来,从此不用再担心编译慢的问题咯.具体的集成会在下面贴上官方详细介绍,这篇文章就记录本人在Android Studio开发的项目上集成过程中遇到的坑。
Ⅰ. 集成
参考下官方的文档,里面有非常的详细的介绍
>
- https://github.com/alibaba/freeline/blob/master/README-zh.md
- https://yq.aliyun.com/articles/59122
Ⅱ.大坑小坑
看到好多小伙伴在折腾Freeline的集成过程中都会遇到不少的问题,当然,有些问题仍得期待官方逐渐完善,但是大多问题是可以得到解决的,可以到上面网址的云栖社区看下官方介绍下面的留言,经常遇到的问题都能看到解决方法,如下截图:
下面记录遇到的坑
1.flavor的坑
简单贴下异常信息,如下
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即可.
解决:
productFlavors {
huawei{}
baidu {}
_360 {}
lenovo{}
yidong{}
yingyongbei{}
xiaomi {}
//...
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
//加入下面的脚本,指定flavor
freeline {
hack true
productFlavor 'huawei' //指定flavor为华为市场
}
2.flavor的坑2
简单贴下异常信息,如下
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 {
hack true
productFlavor 'assembleHuawei' //这个的值指定错了,改为huawei或其他的渠道包名
}
3.又是等待
停留在下面两行,等待N久
[DEBUG] [tracing] build_base_resource_aapt_task: 2838.99998665ms
[DEBUG] [build_base_resource_task] build_base_resource_task finish in 2.9s
解决:可能手机连接不正常,拔掉手机数据线重新接上
4.需要安装python,python的版本要求是2.x,3.x会报错的.
备注:除了上面记录的几个小点,当然还遇到了其他的问题,但大多在云栖的留言板上可以看到相应的问题和解决方案,有些最新的问题留言虽然还没有得到解决,但相信很快会得到解决的.
Ⅲ.集成过程中随笔记录的
>
- gradlew initFreeline -Pmirror -PfreelineVersion=0.8.2 //命令行下载Freeline
- python配置环境变量,将python的安装目录放在path环境变量里,命令行敲下python验证是否成功
- gradle知识点: applicationIdSuffix “.debug” //gradle下指定debug/release模式下打包生成包名的后缀
Ⅳ.总结
集成过程中遇到不少的坑,花了一个上午的时间,但是这两周在项目开发中用着挺爽的,再也不用担心电脑卡死之类的问题。除了第一次编译比较慢,之后简直是秒编译,6得飞起;当然,有时会出现白屏,只要应用退出之后重启就可以了,这么6,项目上没用上真的是不6咯。