个人总结 gradle 缺点:
旧版只能用 groovy 写脚本也算个缺点,这个语言太灵活。本身 gradle 对脚本编写没有约束就很灵活了,这样一来一个构建脚本在项目复杂之后都很有可能变得难以阅读。
很久以前 idea 还能用 maven,不知道现在还能不能用?
1
pC0oc4EbCSsJUy4W 2021-02-27 04:12:42 +08:00 1
gradle 慢是你的网络问题==
|
2
CrazyBoyFeng OP @fatelight 第 3 条,同一个项目用 maven 和 gradle 对比得出的结论。没个参照对象怎么敢说慢呢?
另外,“网络不行”、“配置不行”这类吐槽其实挺无用的。我是觉得它不好用,又不是用不了必须换网加配置。说着轻巧,难道不要成本吗,而且能带来增益多少可难说。 |
3
lionseun 2021-02-27 10:29:04 +08:00 via Android
maven 扩展性不如 gradle,ps:关闭 gradle Damon 不是正常操作吗
|
4
winterbells 2021-02-27 11:01:38 +08:00 1
lz 是来找认同的,不是要你们解释反驳
|
5
CrazyBoyFeng OP @winterbells 我是来找替代解决方案的。我不需要寻求认同。
|
6
HongJay 2021-02-27 11:42:52 +08:00
网络不行就是不行啊。。。只能说明你不懂啥叫谷歌
|
7
pursuer 2021-02-27 11:55:09 +08:00
github 上可以找到 android-maven-plugin,不过我没用过。
|
8
hantsy 2021-02-27 12:05:50 +08:00 4
Maven 也有第三方维护的 Plugin (不止一个)。
https://www.vogella.com/tutorials/AndroidBuildMaven/article.html Google 可以比较喜欢自定义的,相对比较灵活,之前很多项目如 Gwt 等用的是 Ant,现在主要 Gradle 。 国内的 Gradle 体验比 Maven 真的差太多,特别 Gradle 配置的兼容性坑爹(一年一次的大版本升级,对前面版本没法兼容,而 Maven 3 现在还可以运行十几前的 Maven 2 程序),Puglin 的名称时常改动,很多一两年内的 Plugin,在新 Gradle 版本要么找不到,要么不能运行。 Gradle Wrapper 下载 Dist 和 Gradle 的 Plugin 不支持 Maven Repo 那样 Mirror 配置, 不能从 Maven Repo 更新这是最扯蛋,国内速度慢得要命。Gradle 特别依赖的 Jcenter 国内我这里是不能访问的,本身也是龟速,而且 Jcenter 马上要关闭了,到时又是一堆 Gradle 项目 Breaking 。 即使从 Maven Repos (不管远程还是本地)下载了依赖,Gradle 自己又建立一套本地依赖库,而且 Folder 名全部用 Sha 命名。 如果用 Gradlew 来 Build 项目,它会尝试下载一个 Dist 到个人目录下(如果不存在),几个版本下来,这样硬盘很多就被掉几十 G 。 Gradle 运行过程中,Gradle Damon 一直跑后台,太吃内存了。另外在个人目录,Gradle 为配合 Damon,生成堆积如山的 Cache 文件。 我很少用 Gradle,个人目录下 Gradle 乱七八糟的文件多达 40G 。这比 5 年来下载的 Maven Deps 还多一倍。如果我是日常用 Gradle,5 年下来估计 500G 硬盘都是不够用的。 |
9
CrazyBoyFeng OP |
10
darktiny 2021-02-27 12:40:08 +08:00 1
愿意折腾,就 Buck 吧
|
11
hantsy 2021-02-27 12:43:32 +08:00
|
12
Team 2021-02-27 13:09:12 +08:00 2
在这个网站上讨论一些比较严肃的问题,要注意经常屏蔽
有很大一部分人的回答,每次就几个字儿最多不超过一句话 而且讨论的问题往往也不是什么严肃的问题 所以他们的回答出现在这里基本上就是没用的,甚至还有害 |
13
pC0oc4EbCSsJUy4W 2021-02-27 15:49:37 +08:00
@CrazyBoyFeng 我试过,完全清理本地缓存的话,maven 和 gradle 速度下载速度没啥差距。gradle 比 maven 墙的厉害,你不代理可能下载都能出错。所以我说慢,可能是你网络问题。自己抓包看看下载包的速度就知道了。或者项目配置 gradle 镜像源或者贵司自己有专门同步的库
|
14
pC0oc4EbCSsJUy4W 2021-02-27 15:50:20 +08:00
@Team 对有害,请 block 我,你的非常有用
|
15
zhanlanhuizhang 2021-02-27 15:56:52 +08:00 1
|
16
CrazyBoyFeng OP @darktiny 感谢分享。简单了解了一下 buck,挺好的东西,已经出现好几年了,我竟不知道。
我试用了一下 buck,是比 gradle 要快,内存消耗也不多,不会卡住 idea 。不过我只是测试一下首次全量构建,没有连续使用,不知道增量的效果怎么样。害怕 daemon 随着 repo 长大会不会像 gradle 那样反客为主。不过全量构建这么快,如果不是巨大的应用,感觉平常应该不开 daemon 也可以。 脚本格式是 python 语法,不过 buck 本身是 java 写的,运行在 jvm 上。python 语法简单易读,懂的人也多。 |
17
CrazyBoyFeng OP @zhanlanhuizhang 感谢分享。阅读 pom.xml 得知,zxing 正是使用了楼上所说的 android-maven-plugin 。不过 zxing 也是三年没更新了,我都怀疑它是 eclipse 写的遗留代码,那个目录结构也像 eclipse 。eclipse 上现在没有官方 android 支持了,kotlin 支持也不好。用第三方插件怕踩坑。
bazel 感觉跟 buck 很像。而且 idea 插件还在更新。buck 的 idea 插件两年没动了。 |
18
elonmask 2021-02-27 17:20:35 +08:00 via Android
放弃安卓吧,搞 AI 去
|
19
GM 2021-02-27 17:25:11 +08:00 1
身处墙外,装了 10000000Mbps 宽带,用着 128G 内存+9900K+10T SSD 的开发机的某些人说:
我这没问题,你网络不好不要怪 gradle 不行!你机器烂不要怪 gradle 卡!你投资生产工具的钱都不愿意花,还做什么码农? 说完一转身,云淡风轻,不带走一丝云彩,深藏功与名。 留下台下那群拿着平均线工资、用着雇主给的垃圾开发机的码畜们一脸懵逼。 |
20
newee 2021-02-27 19:16:23 +08:00
实际上只是因为网络的问题,使用的时候会出现半天下不动的情况。在海外其实不会有这种情况,几十 M,1 分钟不要就下载完了。
所以在这种网络下能正常使用,也是开发的基本操作。 另外 gradle 还是有一定优势的,只是当前的应用场景没用到这些优势,体会不到。才会简单的把这个当成一个导包工具。其实还是有一些优点的,要是没啥优点,还不早就被淘汰了。 当然很多东西,有一些优劣,比如说火狐浏览器比 chrome 更占内存,android studio 比 vs code 更占内存。但是挡不住大势,大势是什么。现在可能用着 4 核 4 线程的电脑,16G 内存。但是总有一天要升级 10 核,64G 内存,是不是? 我刚做开发的时候,天天想着给哪些低端机做适配,想方设法去改善性能。然而几年之后低端机一样还是没有人用了。 |
21
a719031256 2021-02-27 19:20:43 +08:00
@fatelight 国内 gradle 下载都慢,我试过公司的专线网络也慢,家里的百兆光纤也慢,以前尝试过自己弄个安卓 app 来弄,结果卡在 gradle 上了,还有一个就是 gradle 的版本问题,好像小版本不同的 gradle 兼容性也有问题,我网上下的 app 源码原本想改改来用,结果就比源码版本高两个小版本号就报错,感觉 gradle 就是谷歌强推出来的,并不好用但强制你用
|
22
janus77 2021-02-27 19:36:33 +08:00
1 日常开发不需要做兼容,你项目制定版本号就行了
2 同上,如果你的版本号不变动,自然在清理的时候也就不费力 3 网络问题,maven 一样很多人换 aliyun 镜像 4 新系统这方面确实欠缺,主要靠经验累积和自己搜索解决。开发久了就好了 5 java 写久了不灵活也是罪?脚本语言不灵活凭啥被用于脚本啊 6 占用大这个也是新系统一直以来的缺陷,我没法回答 |
23
pC0oc4EbCSsJUy4W 2021-02-27 19:48:01 +08:00
@a719031256 我都挂代理,走中转专线
|
24
coolesting 2021-02-27 22:29:03 +08:00 via Android
除了吃内存之外,没感觉不太好的地方。
否则也不会有 kill gradle 的插件出现。 |
25
Jirajine 2021-02-27 22:30:26 +08:00 via Android
不要用 gradlew,构建脚本用 kts,基本还可以。
|
26
CrazyBoyFeng OP 我试了一下 bazel,目前感觉良好。idea 里的插件也好用。google 自己做的工具也不错啊,为什么不推广呢?
我会尝试用久一点再分享我的体验。 不过,需要用到第三方 gradle 插件的项目,目前还是只能使用(指定版本的) gradle 。 |
27
systemcall 2021-02-28 00:28:01 +08:00 via Android
感觉 gradle 确实很垃圾,可以和 keil 礦 ision 并列的那种
一个浪费硬盘而且占的是家目录、需要强大的梯子、电脑配置要求高,一个浪费生命还时不时崩溃 怀念以前拿 vb6.0 写程序的日子,那个时候就没这么多破事,用 vs 写安卓也没这么多破事,起码安装的时候会告诉你会吃掉多少磁盘空间、方便卸载掉 |
28
HangoX 2021-02-28 12:48:39 +08:00 1
楼主说的 5 个问题对于熟悉 gradle 的人都不是问题。第 6 个是楼主自己勾选了编辑即构建,idea 可以关闭,我重来不开那个。deamon 不是这样的意思,deamon 是下次构建的时候可以重新使用虚拟机和内存达到更快的目的,不喜欢关闭即可
楼主没有对比相同项目下 maven 和 gradle 的构建时间对比,gradle 是比 maven 快很多的,官方就有对比 https://gradle.org/gradle-vs-maven-performance/ ,毕竟那么多缓存摆在那里,想不快都难。磁盘占用问题,这个东西加磁盘就能加速的事情为什么不干 |
29
hantsy 2021-02-28 14:24:08 +08:00
@newee 海外当然不会有问题。 在国内你用 Gradlew 编译一下,下一个 Dist 几 K 到十几 K,而且经常断。项目依赖可以借 Maven Mirror 。这东西还有它的插件系统连 Mirror 都没有,必须从官方下载。
国内的 5G,如果在开发过程的检验也就是 2G 速度而已。 |
30
chenjiajia9411 2021-03-01 14:26:58 +08:00
不用 Gradle 完全可以啊,自己下好配好依赖之后用 build-tools 自己编译就行了。
|
31
Anonywp 2021-03-01 15:38:38 +08:00
|
32
yike47 2021-03-01 20:38:17 +08:00
俺就没有感同身受了。公司配置 32G 运存+固态。自己的是 Mac 高配。 从来都是一把梭,秒开..........
|
33
imzcg2 2021-03-03 11:47:48 +08:00
as 绑定 gradle,换个好电脑和代理就好了把
|
34
systemcall 2021-03-03 20:41:36 +08:00
你可以换成 Harmony Studio,之后等待自主研发的分布式 5G 可形式化验证的国产软件取代 gradle
|