android 开发只能用 gradle 吗?

2021-02-27 03:13:33 +08:00
 CrazyBoyFeng

个人总结 gradle 缺点:

  1. api 未稳定,不同版本不兼容。
  2. 下载软件包用 hash 作目录,难以分辨,难以清理。不同版本的 gradle 竟然各自重复维护相同版本的软件包。
  3. 同样是从那三个仓库下软件包,为什么 gradle 就比 maven 慢这么多(来自 java 后端项目开发时的体验对比)?
  4. 出错提示太简陋,无法定位错误原因。
  5. 脚本编写没有约束,也就是太灵活,不利于协作。
  6. 耗内存,甚至超过 idea 占用的内存。这个是 gradle 特性决定的。为了节省构建时间,gradle 会在敲代码期间一直在后台对待构建内容进行缓存。所以能在构建时快于 maven (但我的实际体验感觉也没快多少)。maven 平时是不运行的。而且我不知道为啥 gradle 要另起个进程,而不是像 maven 那样内置在 idea 里通过 api 调用。难道是因为 gradle 是 groovy 写的所以没法内置到 idea 里?要知道两个 jvm 进程可不同于两个 native 进程,相当于跑在两个虚拟机里,需要两倍的虚拟层和运行时的资源开销。而如果把守护进程关掉,那么在构建时,gradle 会巨慢无比。

旧版只能用 groovy 写脚本也算个缺点,这个语言太灵活。本身 gradle 对脚本编写没有约束就很灵活了,这样一来一个构建脚本在项目复杂之后都很有可能变得难以阅读。

很久以前 idea 还能用 maven,不知道现在还能不能用?

9408 次点击
所在节点    Android
34 条回复
a719031256
2021-02-27 19:20:43 +08:00
@fatelight 国内 gradle 下载都慢,我试过公司的专线网络也慢,家里的百兆光纤也慢,以前尝试过自己弄个安卓 app 来弄,结果卡在 gradle 上了,还有一个就是 gradle 的版本问题,好像小版本不同的 gradle 兼容性也有问题,我网上下的 app 源码原本想改改来用,结果就比源码版本高两个小版本号就报错,感觉 gradle 就是谷歌强推出来的,并不好用但强制你用
janus77
2021-02-27 19:36:33 +08:00
1 日常开发不需要做兼容,你项目制定版本号就行了
2 同上,如果你的版本号不变动,自然在清理的时候也就不费力
3 网络问题,maven 一样很多人换 aliyun 镜像
4 新系统这方面确实欠缺,主要靠经验累积和自己搜索解决。开发久了就好了
5 java 写久了不灵活也是罪?脚本语言不灵活凭啥被用于脚本啊
6 占用大这个也是新系统一直以来的缺陷,我没法回答
fatelight
2021-02-27 19:48:01 +08:00
@a719031256 我都挂代理,走中转专线
coolesting
2021-02-27 22:29:03 +08:00
除了吃内存之外,没感觉不太好的地方。
否则也不会有 kill gradle 的插件出现。
Jirajine
2021-02-27 22:30:26 +08:00
不要用 gradlew,构建脚本用 kts,基本还可以。
CrazyBoyFeng
2021-02-27 23:01:18 +08:00
我试了一下 bazel,目前感觉良好。idea 里的插件也好用。google 自己做的工具也不错啊,为什么不推广呢?
我会尝试用久一点再分享我的体验。
不过,需要用到第三方 gradle 插件的项目,目前还是只能使用(指定版本的) gradle 。
systemcall
2021-02-28 00:28:01 +08:00
感觉 gradle 确实很垃圾,可以和 keil 礦 ision 并列的那种
一个浪费硬盘而且占的是家目录、需要强大的梯子、电脑配置要求高,一个浪费生命还时不时崩溃
怀念以前拿 vb6.0 写程序的日子,那个时候就没这么多破事,用 vs 写安卓也没这么多破事,起码安装的时候会告诉你会吃掉多少磁盘空间、方便卸载掉
HangoX
2021-02-28 12:48:39 +08:00
楼主说的 5 个问题对于熟悉 gradle 的人都不是问题。第 6 个是楼主自己勾选了编辑即构建,idea 可以关闭,我重来不开那个。deamon 不是这样的意思,deamon 是下次构建的时候可以重新使用虚拟机和内存达到更快的目的,不喜欢关闭即可
楼主没有对比相同项目下 maven 和 gradle 的构建时间对比,gradle 是比 maven 快很多的,官方就有对比 https://gradle.org/gradle-vs-maven-performance/ ,毕竟那么多缓存摆在那里,想不快都难。磁盘占用问题,这个东西加磁盘就能加速的事情为什么不干
hantsy
2021-02-28 14:24:08 +08:00
@newee 海外当然不会有问题。 在国内你用 Gradlew 编译一下,下一个 Dist 几 K 到十几 K,而且经常断。项目依赖可以借 Maven Mirror 。这东西还有它的插件系统连 Mirror 都没有,必须从官方下载。

国内的 5G,如果在开发过程的检验也就是 2G 速度而已。
chenjiajia9411
2021-03-01 14:26:58 +08:00
不用 Gradle 完全可以啊,自己下好配好依赖之后用 build-tools 自己编译就行了。
Anonywp
2021-03-01 15:38:38 +08:00
yike47
2021-03-01 20:38:17 +08:00
俺就没有感同身受了。公司配置 32G 运存+固态。自己的是 Mac 高配。 从来都是一把梭,秒开..........
imzcg2
2021-03-03 11:47:48 +08:00
as 绑定 gradle,换个好电脑和代理就好了把
systemcall
2021-03-03 20:41:36 +08:00
你可以换成 Harmony Studio,之后等待自主研发的分布式 5G 可形式化验证的国产软件取代 gradle

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

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

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

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

© 2021 V2EX