唉,来吐槽一下 gradle。。

2020-12-15 16:08:34 +08:00
 James369
每次开一个新工程,都在下载安装(因为依赖 gradle 的版本不同),占用磁盘空间不说,还浪费时间。
什么版本都要下,从 2.x 到 6.x,占用了 2G 多的空间。

搞不懂这么频繁使用的构建工具,难道不具备向下兼容吗。。
隔壁 xcode 用起来真是舒服多了。。
11380 次点击
所在节点    Android
65 条回复
hantsy
2020-12-15 17:12:42 +08:00
不吐了,没意思。

我不怎么用,下载的 Dist 就超过 10G 了。
hantsy
2020-12-15 17:16:13 +08:00
@Melodyer 用 Wrapper 这种方式,很大程度就是因为它的版本兼容性太差,maven 2 到 3 多少年了,基本上没有什么兼容性问题,一样可以编译运行。

Gradle 的配置语法,每个大版本都是有改动,如果隔两三大个版本,根本就不能运行。
Mithril
2020-12-15 17:18:02 +08:00
@bkmi 那个 CDN 很莫名其妙。你拿浏览器下的很快,但是 Gradle Wrapper 就极其的慢。
让人不禁觉得是不是给自己的 wrapper 做了负优化。
lwlizhe
2020-12-15 17:22:39 +08:00
@lwlizhe 才发现楼主想问为啥没有向下兼容……其实 gradle 是有的,基本跨度不大没啥问题

反正我是经常拉下来项目第一件事就是手动改 gradle-wrapper.properties 中的 distributionUrl,以及 build.gradle 中的各个配置版本,然后再同步、编译……

这样改向下兼容好像没遇到过问题,向上有时候就不行,比如说现在有些最新的项目就要 android studio 4.0,gradle 6 以上,然而我这还在用 android studio3.5.2 gradle gradle-5.4.1-all
stdout
2020-12-15 17:29:18 +08:00
gradle 管理复杂工程还是很牛逼,缺点就是慢。有时候还要 FQ
misaka19000
2020-12-15 17:31:39 +08:00
maven 大法好
acmore
2020-12-15 17:38:35 +08:00
国内使用 Gradle 要做的第一件事就是在 build.gradle 里加上如下内容。这是一切教程的大前提,不然就会永远挣扎在痛苦的深渊中。

tasks.withType(Wrapper) {
enabled = false
}
hantsy
2020-12-15 17:39:07 +08:00
Gradle 用一个长期运行的进程,来实现增量更新,对象动态缓存,原则上性能应该有很大提升,实际体验没那么好,开一个 Gradle,背后消耗的内存比一个 IDE 还多。一般项目依赖我们可以从 Maven 中心下载,但 Gradle 内置的 Plugins 并没有发布 Maven repository,慢得坑爹啊。
xloger
2020-12-15 17:40:59 +08:00
看了眼我的 .gradle 文件夹,8.17G 了。
我的血泪经验就是一个项目集成 okhttp 后,混淆开启后会 Crash,错误是 `lateinit property * has not been initialized`(我自然是能确保我那块正确初始化了)。当时各种排查查了两天,最后发现是 kotlin + gradle + 混淆的某些奇怪 bug,更新 gradle 版本从 6.1.1 到 6.5 解决了。
如果我没下过新版的一直用旧版,可能下辈子都找不到真正原因...
hantsy
2020-12-15 17:41:56 +08:00
下一个版本 Maven 4.0 (原计划的 3.7 取消) 也可能会带一个类似的 Wrapper,动态更新机制。
longaiwp
2020-12-15 17:45:13 +08:00
Gradle 明显好用,但是确实配置上太多坑了,尤其是各种版本。当然 AS 还有 Gradle 插件和 Gradle 版本两种东西,搞得人头都大了,它还不跟着插件版本下载,喜欢直接下最新,然后无法使用。
CrazyBoyFeng
2020-12-15 18:11:54 +08:00
gradle 用的仓库都还是 maven 的,为啥不直接用 maven ?说 maven 繁琐不如说是 gradle 太善变,或者构建脚本里写了太多魔法代码,以至于跟别人协作项目都要先调教 gradle 。何况我自己的体验 gradle 的编译打包还比 maven 慢。
写简单的项目用 gradle 并不经济,它会花大量的内存和时间来进行缓存和 diff 比较。甚至如楼上所说,gradle 资源开销能够一度比 ide 都高。这在大项目上的小改动也许会省时间,但是小项目这反而是一种累赘和冗余。
而即便写大项目,往往因为配置过于复杂,同时配置又过于灵活,变得难以维护。轻易不敢修改构建脚本,说不定哪个混淆插件、哪个发布插件的代码配置稍微修改一下就会出现无法预知甚至无法排查的故障。
maven 的死板以前都被人看作缺点,不过我个人觉得,对于大项目,这可能是个优点。不能随心所欲地写魔法代码,而必须用固定的框架,能减少很多问题。
chihiro2014
2020-12-15 18:20:16 +08:00
没有规矩不成方圆
CoderGeek
2020-12-15 18:23:23 +08:00
java 的用过一周 放弃了 很恼火
NexTooo
2020-12-15 18:29:44 +08:00
第一次打开本地新项目,能一次过的时候,我都会觉得今天我运气不错
hongch
2020-12-15 19:57:08 +08:00
如果是自定义 gradle 插件,各个版本之间的不同确实令人恼火,但如果只是拉个 jar 包,改改 gradle version 就可以了,也不麻烦
sagaxu
2020-12-15 20:28:47 +08:00
gradle 不符合国情,中国人硬盘小,10G 8G 空间宝贵。网也不好,恨不得所有东西都离线使用。
hantsy
2020-12-15 20:30:16 +08:00
@sagaxu 哈哈
fromzero
2020-12-15 20:32:30 +08:00
可以使用 offline 模式啊,跑本地的 gradle 。或者你可以把工程里的 gradle 版本改成你自己的
Lemeng
2020-12-15 20:33:08 +08:00
2g 吗,好吧,就不多说了

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

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

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

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

© 2021 V2EX