写了几年 flutter ,又回到了安卓,感觉一夜回到解放前。又让我想起曾经被 gradle ,android studio ,kotlin 还有何种插件依赖和兼容性的四重拷打中。仿佛深夜的四重奏,指加班。因为打包工具造成产出下降很难向上解释。最近又在从 support 包迁移 androidx ,排查了 100 个打包错误后放弃。

gradle 配置不向下兼容,报错模糊不清,不敢碰升级,gradle 报错广泛解决方案就是 clean cache 和 invalidate caches and restart 引出了另一个屑 android studio 。还有 gradle 那莫名其妙的全量构建

kotlin 没什么太大问题,本身可以提高编码体验,比 java 舒服多了,可目前现状基本上一个项目 java kotlin 都用,代码可读性是小问题,比如 kt 插件要升级吧就要吧 androidx agp gradle 全都升级,哪一个都是令人畏惧的存在。进而回到 gradle 升级的问题。

大家说一下你们现在是怎么舒适的写原生代码的。

2025 年了怎么还没迁移到 androidx…🫨

这年头还有没迁移到 androidx 的项目?你快跑吧。。。

gradle 还是个黑盒一样,不过好在现在有 AI ,一般问 AI 可以解决问题

对于新项目,compose +Android 对比 switfui +Xcode 体验好巨多,iOS 正在被 Android 反超,当然我说的是 Android 不是安卓

让 ai 辅助迁移

#3
#5 ai 确实可以缓解很多不适感,请问 cursor 可以吗。我还用 ai 工具改项目结构

让我吐槽一下我们安卓开发。
本人:java
IOS:已上架
Android:后面来的,一直说接口有问题,文档都看不明白。这都无所谓 talk 一下就 ok 。
特喵的他直接调用生成的接口怼他没上线的功能,做测试。还犟嘴。 还不觉得自己错了,是不是所有安卓同学都是这样?

调用生产环境的接口

肯定不是

AndroidX 只是个支持库,楼主描述的问题核心是 gradle 这种构建系统复杂,与使用什么样的支持库没有关系。我不是专业的 Android 开发,只是经常做一些逆向或者开发个人用的工具,经验不一定靠谱,以下我说的仅供参考。

简单说,一劳永逸解决心智负担的方法就是学明白构建原理以及构建工具的使用方法。

我认为这个问题本质上就和 git 图形化插件一样,你对 git 越熟悉,用图形化插件就越不容易出错。假如对 git 理解不到位,用图形化插件就容易爆炸,最终很可能还是要回到命令行去排错。

构建本身就是个非常复杂的过程,可能很多专业开发写了很多年 Android 都没有尝试过手动构建,因为 IDE 隐藏了构建工具( gradle )的细节,构建工具又隐藏了构建过程的细节。当底层构建过程出错的时候,经过两层抽象之后暴露给开发者的信息就非常有限,容易让人摸不着头脑。

我们就用手动模拟 gradle 工作流程的方式,从最简单的开始一步一步说。首先要 Java 编译,所以要配置 jdk ,同时要配置依赖,这里依赖的来源可以是线上仓库,可以是本地引入等等。假如引入的依赖有 C 之类的原生库,就要引入 ndk 做交叉编译。这里就不深究了,假设直接用 CMake 构建工具完成了。

以上只是编译出各个组件,离完整的应用包还有距离。这里字节码要打包成 dex ,资源文件要用特定工具压缩,最终还要把各个模块再打包成 apk ,还要处理签名等等。

如果只看核心的构建过程并不是很复杂,构建 variants 、测试和缓存等等一系列功能不影响理解这个过程。因为 gradle 的配置本身是个 DSL ,如果你不理解 DSL 背后所代表的实际工作过程,想要通过修改 DSL 代码来排错 debug 就不现实。

在理解 gradle 的原理和 IDE 的使用方法的基础上,手动排错 debug 就不是特别难的事情。当然这个事情不绝对,有些项目时间跨度很长,而某些支持依赖没有语义化版本,对应的 gradle 配置可能无法向后兼容,甚至出现版本一换循环依赖解析失败的问题,这时候就要手工重构替换掉特定依赖了。

刚入行可以理解,工作几年的话,这些问题我觉得抱怨之外,百分百可以自己解决。另外 Flutter 问题也不少。
Doubt can only be removed by actions.

#11 理论上来说我的问题可以用 killall java 加到 post script 里解决,但每次要构建十多分钟,宝子你还年轻以后的坑慢慢踩

Gradle 内部接口经常修改,非常恶心

现在 flutter 开发已经不用 as 了吗

请问为啥回安卓了啊? Flutter 凉凉吗?

反正只要是碰到 Gradle 的,如果没有现成能用的插件,谷歌自家的 Gemini 也是无能为力的。

Android 是这样的,从 as 里面创建一个 demo 跑起来也得耗点功夫

现在搞 Android 可真一点不享受,你从 flutter 回来,编译这一块你应该就受不了,时间长

有啥心智负担?
不就是时不时 Gradle 接口变更 、 仓库跑路 、 作者删库、 墙

确实挺扯淡的,跑个 demo 都费劲,android stduio 建议升级 gradle ,然后升级了好多程序又不能用。把 gradle 降级后不行,也没提醒,试了半天才知道,对应的插件也要降级

老项目不升级能用就行,新项目全用新的,最主要的是要保持网络畅通

可让你逮着机会,对着 Android 开发开一波地图炮了