![]() | 1 FreeEx 2020-12-15 16:13:03 +08:00 ![]() 已经切回 maven 了,gradle 的有点不足以让我来跳这个坑。 |
![]() | 2 FreeEx 2020-12-15 16:13:24 +08:00 错别字:优点。 |
![]() | 3 chendy 2020-12-15 16:14:12 +08:00 ![]() 2G 放在 gradle 这边真的不多… |
![]() | 4 HongJay 2020-12-15 16:15:36 +08:00 才 2g ?那你要谢谢谷歌了 |
5 GM 2020-12-15 16:16:38 +08:00 ![]() xcode 真的舒服吗。。。。。。。。 |
6 halou12 2020-12-15 16:16:49 +08:00 |
![]() | 7 byte10 2020-12-15 16:21:16 +08:00 安卓的 是比较坑。。没有一个安卓项目能安心的 启动的 |
8 darling19961030 2020-12-15 16:22:39 +08:00 ![]() 算特性吧,为了保持一致 |
![]() | 9 Melodyer 2020-12-15 16:24:21 +08:00 ![]() 所以我每次 clone 一个 Android 项目下来时,都是先手动修改 gradle 版本,然后再用 Android Studio 打开,要不然得等他下载旧版本的 gradle 很久,浪费时间也浪费磁盘空间。 |
![]() | 10 Kasumi20 2020-12-15 16:29:50 +08:00 哈哈哈,是这样的 |
![]() | 11 Vegetable 2020-12-15 16:30:16 +08:00 ![]() 打开陌生安卓项目之前,我都是双手合十状态。 |
![]() | 12 manami 2020-12-15 16:30:57 +08:00 说实话 web 开发用不惯 gradle,还是喜欢 maven,但是看 android 开发他们好像用的很香 |
![]() | 13 cheng6563 2020-12-15 16:31:32 +08:00 via Android 不如说是版本更新太快了 |
![]() | 14 murmur 2020-12-15 16:37:15 +08:00 xcode 是省心,新版本 xcode 直接不让用旧版操作系统打开,安卓 studio 也没说新手机不让用旧版 ide 调试吧 啥兼容性不做是省心 |
![]() | 15 murmur 2020-12-15 16:44:11 +08:00 ![]() 顺便 xcode 多大来着,android studio 多大,只看库不看本体还行 要不是我折腾过 ios 项目,整过抠卡的依赖我还真信了 xcode 方便 |
16 lwlizhe 2020-12-15 16:57:48 +08:00 没办法,你要想 android 各个系统版本占比是多少 然后再对比下隔壁 ios 的系统占比 碎片化这个问题谷歌也很头疼,但是还真没太好的办法,向下兼容不得不做,而且还要做不少 |
17 gam2046 2020-12-15 17:00:30 +08:00 ![]() 你可以选择不使用 gradle wrapper,就没这个苦恼了。 不过我自己觉得这问题是不大的,wrapper 的目的是保证环境的一致性。况且几个 G 对于现在开发人员的电脑来说其实并不算什么。Android 可能对于 gradle 版本会敏感一些,如果是普通 Java 项目,其实 gradle 版本影响不大,主要是 Android build tools 的版本升级太快了 |
18 Mithril 2020-12-15 17:02:01 +08:00 ![]() 别问,问就是你网不行。 |
![]() | 19 bkmi 2020-12-15 17:07:10 +08:00 via Android gradle 在国内有 cdn 了,但是依然还是慢,不知道为啥 另外如果一个 gradle wrapper 版本正在运行,就算同版本它还是会重新下载 |
20 yazinnnn 2020-12-15 17:09:49 +08:00 借楼一问 gradle wrapper 里下载的文件,是根据啥保存的?根据 wrapper 文件夹的 hash 值? 比如,在~/.gradle/wrapper/dists/gradle-6.7.1-all 下面,有两个文件夹 2moa8rlfac5eqlcfgk98k0deb 7iy34phwxf6lzs24y8cbh0cph 一个是 gradle-wrapper.properties 默认下载地址 另一个是 gradle-wrapper.properties 修改了 distributionUrl 的下载地址 |
21 hantsy 2020-12-15 17:12:42 +08:00 不吐了,没意思。 我不怎么用,下载的 Dist 就超过 10G 了。 |
22 hantsy 2020-12-15 17:16:13 +08:00 @Melodyer 用 Wrapper 这种方式,很大程度就是因为它的版本兼容性太差,maven 2 到 3 多少年了,基本上没有什么兼容性问题,一样可以编译运行。 Gradle 的配置语法,每个大版本都是有改动,如果隔两三大个版本,根本就不能运行。 |
23 Mithril 2020-12-15 17:18:02 +08:00 @bkmi 那个 CDN 很莫名其妙。你拿浏览器下的很快,但是 Gradle Wrapper 就极其的慢。 让人不禁觉得是不是给自己的 wrapper 做了负优化。 |
24 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 |
25 stdout 2020-12-15 17:29:18 +08:00 gradle 管理复杂工程还是很牛逼,缺点就是慢。有时候还要 FQ |
![]() | 26 misaka19000 2020-12-15 17:31:39 +08:00 maven 大法好 |
27 acmore 2020-12-15 17:38:35 +08:00 ![]() 国内使用 Gradle 要做的第一件事就是在 build.gradle 里加上如下内容。这是一切教程的大前提,不然就会永远挣扎在痛苦的深渊中。 tasks.withType(Wrapper) { enabled = false } |
28 hantsy 2020-12-15 17:39:07 +08:00 Gradle 用一个长期运行的进程,来实现增量更新,对象动态缓存,原则上性能应该有很大提升,实际体验没那么好,开一个 Gradle,背后消耗的内存比一个 IDE 还多。一般项目依赖我们可以从 Maven 中心下载,但 Gradle 内置的 Plugins 并没有发布 Maven repository,慢得坑爹啊。 |
29 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 解决了。 如果我没下过新版的一直用旧版,可能下辈子都找不到真正原因... |
30 hantsy 2020-12-15 17:41:56 +08:00 下一个版本 Maven 4.0 (原计划的 3.7 取消) 也可能会带一个类似的 Wrapper,动态更新机制。 |
31 longaiwp 2020-12-15 17:45:13 +08:00 ![]() Gradle 明显好用,但是确实配置上太多坑了,尤其是各种版本。当然 AS 还有 Gradle 插件和 Gradle 版本两种东西,搞得人头都大了,它还不跟着插件版本下载,喜欢直接下最新,然后无法使用。 |
![]() | 32 CrazyBoyFeng 2020-12-15 18:11:54 +08:00 ![]() gradle 用的仓库都还是 maven 的,为啥不直接用 maven ?说 maven 繁琐不如说是 gradle 太善变,或者构建脚本里写了太多魔法代码,以至于跟别人协作项目都要先调教 gradle 。何况我自己的体验 gradle 的编译打包还比 maven 慢。 写简单的项目用 gradle 并不经济,它会花大量的内存和时间来进行缓存和 diff 比较。甚至如楼上所说,gradle 资源开销能够一度比 ide 都高。这在大项目上的小改动也许会省时间,但是小项目这反而是一种累赘和冗余。 而即便写大项目,往往因为配置过于复杂,同时配置又过于灵活,变得难以维护。轻易不敢修改构建脚本,说不定哪个混淆插件、哪个发布插件的代码配置稍微修改一下就会出现无法预知甚至无法排查的故障。 maven 的死板以前都被人看作缺点,不过我个人觉得,对于大项目,这可能是个优点。不能随心所欲地写魔法代码,而必须用固定的框架,能减少很多问题。 |
33 chihiro2014 2020-12-15 18:20:16 +08:00 没有规矩不成方圆 |
![]() | 34 CoderGeek 2020-12-15 18:23:23 +08:00 java 的用过一周 放弃了 很恼火 |
35 NexTooo 2020-12-15 18:29:44 +08:00 ![]() 第一次打开本地新项目,能一次过的时候,我都会觉得今天我运气不错 |
![]() | 36 hongch 2020-12-15 19:57:08 +08:00 如果是自定义 gradle 插件,各个版本之间的不同确实令人恼火,但如果只是拉个 jar 包,改改 gradle version 就可以了,也不麻烦 |
![]() | 37 sagaxu 2020-12-15 20:28:47 +08:00 via Android ![]() gradle 不符合国情,中国人硬盘小,10G 8G 空间宝贵。网也不好,恨不得所有东西都离线使用。 |
![]() | 39 fromzero 2020-12-15 20:32:30 +08:00 可以使用 offline 模式啊,跑本地的 gradle 。或者你可以把工程里的 gradle 版本改成你自己的 |
40 Lemeng 2020-12-15 20:33:08 +08:00 2g 吗,好吧,就不多说了 |
![]() | 41 nl101531 2020-12-15 20:38:54 +08:00 via iPhone Java 开发路过,这玩意太伤磁盘了,心疼我的小电脑 |
42 EminemW 2020-12-15 22:43:30 +08:00 改 gradle-wrapper.properties 中的 distributionUrl,或者是手动用浏览器下载然后把压缩包放到 IDE 的下载路径下,比 IDE 下载的快 |
![]() | 43 mavan 是尽量兼容 xcode 是压根不兼容 看来夹在中间做人就是活该被骂呗…… |
44 shingkit 2020-12-15 23:08:01 +08:00 @yazinnnn 正常是只有一个的,有两个是因为你有的项目升级只改了 gradle-wrapper.properties 的版本号,没有换同目录下的 jar 包 |
![]() | 45 xupefei 2020-12-16 03:50:31 +08:00 via iPhone 考虑一下 bazel ?远程缓存加持,编译快到飞起 |
![]() | 47 20015jjw 2020-12-16 05:00:31 +08:00 via Android 人在海外 用 mac pro 痛点就基本没有了 |
48 gtanyin 2020-12-16 08:51:21 +08:00 项目拉下来就改个已有的版本号呗,也不麻烦 |
49 yazinnnn 2020-12-16 08:59:09 +08:00 @shingkit 不不不,版本号我没改的,只是改了下载路径(因为 idea 下载实在是不靠谱。。。) 两个 properties 文件里的 distributionUrl 分别是 http\://localhost:8080/gradle-6.7.1-all.zip https\://services.gradle.org/distributions/gradle-6.7.1-all.zip |
50 yanlaz 2020-12-16 09:35:14 +08:00 打开陌生项目,直接把项目里的 grdle 文件夹删了,这样构建时就会用已经下好的一个版本 |
51 Cbdy 2020-12-16 09:35:35 +08:00 via Android 看了一下你说的槽点,明明是自己不会用怪软件嘛 |
![]() | 52 sw926 2020-12-16 09:46:57 +08:00 现在看来,gradle 已经是工程的一部分了,就好像你写的代码依赖特定版本的库,项目里面的编译插件也依赖不同的 gradle 版本。如果图省事可以不用 gradle wrapper,只用系统安装的 gradle,但是各个版本的 gradle 的还是有些差异的。 |
![]() | 53 Asuka0947 2020-12-16 10:04:39 +08:00 修改 distributionUrl,我是本地磁盘下放一个,蛋疼的是 idea 每次新建项目都会开始下载,手动关掉,改成本地,再重新引入。 |
54 securityCoding 2020-12-16 10:15:05 +08:00 这玩意主要是太灵活,版本升级速度比 chrome 差点 233 |
![]() | 55 nxforce 2020-12-16 11:13:46 +08:00 我喜欢一路更新最新的 IDE,特别是 IDEA,每次更新新版本的启动界面,都让我每天对着枯燥的代码有了一种新鲜感,但一升级 idea,gradle 和 gradle 插件都提示不满足当前 idea 最低支持的 gradle 版本了。 同样的情况,maven 却没这种事情发生,实在是太稳了。 |
56 HuHui 2020-12-16 11:39:06 +08:00 作为一个工具软件,却一直处于类 dev 状态,确实让人没有想用的欲望。 |
![]() | 57 MagnifierSun 2020-12-16 11:41:50 +08:00 为啥你一直要用最新的呢?自己手动改下 gradle 的版本就行 |
![]() | 58 liyhu 2020-12-16 12:43:13 +08:00 maven 很稳,我几次尝试 gradle,但它经常报错,后面不用了 |
![]() | 59 TomVista 2020-12-16 14:13:22 +08:00 网也是个难题,这东西不走代理,经常跑不起来 |
![]() | 60 hehe12980 2020-12-16 14:33:14 +08:00 但是说实话 Goorvy 写的比 Javas 爽多了 |
![]() | 61 crayygy 2020-12-16 15:14:38 +08:00 via Android 之前我还想学 gradle,后来我宁可去写 C++ |
![]() | 62 beginor 2020-12-17 08:35:45 +08:00 via Android gradle 现在能用 kt 写了, 源代码用 kt, 构建工具也用 kt, 多爽! |
![]() | 63 HolmesYe123 2020-12-17 13:23:12 +08:00 你可以用你本地的 gradle 来构建,这样不用下载所有版本,一个版本走天下 |
![]() | 64 Kamiyu0087 2020-12-17 15:44:04 +08:00 要不是也做 iOS 开发可能真信了 Xcode 用起来更舒服。。。 |
![]() | 65 twoyuan 2020-12-27 00:39:08 +08:00 via Android 一直是网络问题 最近用 ClashX+EnhanceMode 再也没感觉到 Gradle 慢了 |