提醒使用多 flavor 的 Android 工程师。。。

2018-09-11 10:22:24 +08:00
 zongren

我目前开发的项目使用了多 flavor 组合的方式,在开发的过程中发现一个很恶心的性能问题

当 flavor dimensions 超过一定数量后(业务需求),gradle sync 和 build 都变得奇慢无比,在 8 代 i7 低压,8G 内存的机器上平均需要 3 分钟

最后我们的解决方式是,开发中

1、将 flavor 组合拆分成不同的 gradle 文件 2、build.gradle 引用你想开发的 flavor 组合对应的文件

发布时仍然采用最初的 gradle 文件

另外 module 过多好像也会引起性能问题( 30+)

9516 次点击
所在节点    Android
10 条回复
bjzhou1990
2018-09-11 10:29:02 +08:00
debug 阶段不用的 flavor 可以 disable 的
sampeng
2018-09-11 10:35:34 +08:00
还好啊。。。八代普压 i5.16G 。ssd。25s。
flavor 有 3 个

8G 内存有点低。。是否是 ssd ?读写 2G 的那种?
zongren
2018-09-11 10:37:15 +08:00
@bjzhou1990 多谢回复,是的,但是有很多配置需要不停的改写,如果不用 flavor 应该怎么解决?
zongren
2018-09-11 10:37:51 +08:00
@sampeng 多谢回复,ssd 应该没那么快,dell 6000 不到的机器
bjzhou1990
2018-09-11 10:42:30 +08:00
@zongren #3 编写一次就可以解决啊
bjzhou1990
2018-09-11 10:42:40 +08:00
@bjzhou1990 #5

android.variantFilter { variant ->
def name1 = variant.getFlavors().get(0).name
def name2 = variant.getFlavors().get(1).name
def isDebug = variant.buildType.name.equals('debug')
if (name1.equals('ignoredName1') && name2.equals('ignoredName2') && isDebug)
variant.setIgnore(true);
}
}
nicevar
2018-09-11 11:46:40 +08:00
开发中你还全部开启?不慢才怪,两种办法
1.跟楼上 bjzhou1990 写得一样,进行过滤处理
2.开发的时候只配置一种就行了,多个 gradle 文件,发版本的时候交给 jenkins 处理
houskii
2018-09-11 11:47:37 +08:00
那不同 flavor 的代码及资源怎么切换的
XinLake
2018-09-11 12:10:07 +08:00
不会啊,把你的 gradle 贴出来看看?
zongren
2018-09-12 11:34:59 +08:00
@houskii 多谢回复,你是在问我吗。。
@nicevar 嗯。目前采用的就是多个 gradle 文件的方式开发,发布的时候还是正常的多 flavor 方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX