silvernoo
V2EX  ›  Android

Android 开发现在心智负担如何

  •  
  •   silvernoo · Apr 26, 2025 · 10997 views
    This topic created in 562 days ago, the information mentioned may be changed or developed.
    写了几年 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 升级的问题。

    大家说一下你们现在是怎么舒适的写原生代码的。
    48 replies  •  2025-04-28 20:39:58 +08:00
    superedlimited
    superedlimited
    Apr 26, 2025 via iPhone
    1
    2025 年了怎么还没迁移到 androidx…🫨
    magicls
    magicls
    Apr 26, 2025
    2
    这年头还有没迁移到 androidx 的项目?你快跑吧。。。
    Helsing
    Helsing
    Apr 26, 2025 via iPhone❤️1
    3
    gradle 还是个黑盒一样,不过好在现在有 AI ,一般问 AI 可以解决问题
    timelessg
    timelessg
    Apr 26, 2025 via Android
    4
    对于新项目,compose +Android 对比 switfui +Xcode 体验好巨多,iOS 正在被 Android 反超,当然我说的是 Android 不是安卓
    jeepc
    jeepc
    Apr 26, 2025❤️1
    5
    让 ai 辅助迁移
    silvernoo
    silvernoo
    OP
    Apr 26, 2025
    6
    @Helsing #3
    @jeepc #5 ai 确实可以缓解很多不适感,请问 cursor 可以吗。我还用 ai 工具改项目结构
    Romic
    Romic
    Apr 26, 2025❤️1
    7
    让我吐槽一下我们安卓开发。
    本人:java
    IOS:已上架
    Android:后面来的,一直说接口有问题,文档都看不明白。这都无所谓 talk 一下就 ok 。
    特喵的他直接调用生成的接口怼他没上线的功能,做测试。还犟嘴。 还不觉得自己错了,是不是所有安卓同学都是这样?
    Romic
    Romic
    Apr 26, 2025
    8
    调用生产环境的接口
    a0000
    a0000
    Apr 26, 2025 via Android
    9
    @Romic 肯定不是
    kuanat
    kuanat
    Apr 26, 2025❤️10
    10
    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 配置可能无法向后兼容,甚至出现版本一换循环依赖解析失败的问题,这时候就要手工重构替换掉特定依赖了。
    jon97
    jon97
    Apr 26, 2025 via iPhone
    11
    刚入行可以理解,工作几年的话,这些问题我觉得抱怨之外,百分百可以自己解决。另外 Flutter 问题也不少。
    Doubt can only be removed by actions.
    silvernoo
    silvernoo
    OP
    Apr 26, 2025
    12
    @john6lq #11 理论上来说我的问题可以用 killall java 加到 post script 里解决,但每次要构建十多分钟,宝子你还年轻以后的坑慢慢踩
    v2zhao
    v2zhao
    Apr 26, 2025 via Android
    13
    Gradle 内部接口经常修改,非常恶心
    anivie
    anivie
    Apr 26, 2025
    14
    现在 flutter 开发已经不用 as 了吗
    lipyoung
    lipyoung
    Apr 26, 2025 via Android
    15
    请问为啥回安卓了啊? Flutter 凉凉吗?
    HojiOShi
    HojiOShi
    Apr 26, 2025
    16
    反正只要是碰到 Gradle 的,如果没有现成能用的插件,谷歌自家的 Gemini 也是无能为力的。
    iflint
    iflint
    Apr 26, 2025
    17
    Android 是这样的,从 as 里面创建一个 demo 跑起来也得耗点功夫
    nnegier
    nnegier
    Apr 27, 2025 via Android
    18
    现在搞 Android 可真一点不享受,你从 flutter 回来,编译这一块你应该就受不了,时间长
    malimalimali
    malimalimali
    Apr 27, 2025
    19
    有啥心智负担?
    不就是时不时 Gradle 接口变更 、 仓库跑路 、 作者删库、 墙
    lpf0309
    lpf0309
    Apr 27, 2025
    20
    确实挺扯淡的,跑个 demo 都费劲,android stduio 建议升级 gradle ,然后升级了好多程序又不能用。把 gradle 降级后不行,也没提醒,试了半天才知道,对应的插件也要降级
    Vindroid
    Vindroid
    Apr 27, 2025
    21
    老项目不升级能用就行,新项目全用新的,最主要的是要保持网络畅通
    dnL
    dnL
    Apr 27, 2025
    22
    @Romic 可让你逮着机会,对着 Android 开发开一波地图炮了
    Lockroach
    Lockroach
    Apr 27, 2025
    23
    感觉安卓开发的工具链配置都挺麻烦的,而且时不时 as 就提示你升级 agp
    Nuttertoo1s
    Nuttertoo1s
    Apr 27, 2025
    24
    我们现在的项目也还在用着 support ,升不了一点,一大堆兼容问题和适配问题
    xinyu391
    xinyu391
    Apr 27, 2025
    25
    gradle 就是一坨屎,一个好好的项目几个月没打开,然后一打开,就飞出翔 了。
    lqbk
    lqbk
    Apr 27, 2025
    26
    做过 iOS 然后 转 flutter 被 gradle 折磨过哈哈 这样一看 iOS 的 cocoapod 也没那么屎了
    capric
    capric
    Apr 27, 2025
    27
    @kuanat gradle.bat, gradle.sh 就是命令行啊,我们在 devops 都是 k8s 上构建 android app ,没有 gui 界面
    rb6221
    rb6221
    Apr 27, 2025
    28
    理论上呢,jetpack 前和 jetpack 后是两个时代,前者就是碎片化严重,后者还比较稳定
    但是呢,你得要有一个脚手架之类的东西才行,这样就不需要折腾了,但是也不能随意升级三方库
    jeepc
    jeepc
    Apr 27, 2025
    29
    @silvernoo #6 cursor 可以,就得能把整个项目加载到上下文的 ai 工具。不过不要指望它能完全搞定。
    lidayl
    lidayl
    Apr 27, 2025
    30
    写了一年的 Harmony 现在又开始 Android 第一时间是迁移到 compose ...
    limiter
    limiter
    Apr 27, 2025
    31
    老项目先重构再升级,组件化拆分,每个模块都很小的话升级起来就没那么困难了
    justtokankan
    justtokankan
    Apr 27, 2025
    32
    继续写 Flutter 啊 ? 为啥有切回到安卓?
    jmliang
    jmliang
    Apr 27, 2025
    33
    习惯了 Flutter ,现在哪怕只写一端的 App 也用 Flutter 了
    zcmi
    zcmi
    Apr 27, 2025
    34
    flutter 有什么问题吗?正想学 flutter 呢
    Belmode
    Belmode
    Apr 27, 2025
    35
    @kuanat #10 可以看出来,你是对软件工程有一定学习和深入研究的。并且,对工作中的学习思维和方法论都深入总结过。
    HangoX
    HangoX
    Apr 27, 2025
    36
    Gradle 的问题的确不友好,主要是用的是 Groovy 做 dsl ,看起来是好看,但是没有认真学过 groovy 其实很不友好,特别是对 Java 语言开发者来说。个人建议可以改为 kotlin 的 kts ,这样看起来会简单点,但是也有问题,以前基于 Groovy 写的脚本粘贴过来不能用。
    如果想写好 android ,Gradle 构建是绕不过去,这个东西复杂到可以比拼 android 开发。
    cccn
    cccn
    Apr 27, 2025
    37
    写过一段时间的 flutter ,除了 dart 语法太多嵌套外,开发体验挺好的,反正比直接开发原生安卓舒服很多。
    > 个人觉得嵌套也没啥,可能是吐槽的人多了吧,所以单独拿出来说一下。另外平时写多了 jsx ,都有拆解组件的习惯,并没有什么影响
    charlie21
    charlie21
    Apr 27, 2025
    38
    flutter 怎么入门
    Romic
    Romic
    Apr 27, 2025
    39
    @dnL 哈哈哈,以前都是做 web 开发。
    yongchuan
    yongchuan
    Apr 27, 2025
    40
    @kuanat 一看就是大佬 , 现在我的项目就是使用 buildSrc 以及 kotlin DSL 来封装构建过程 , 自写了约定插件来管控 , 再把插件推到 maven 一条龙 , 现在只能说在遇到报错升级什么都是小问题 , 其实跑别人项目多半都是 jdk , agp , Android studio 版本不匹配问题
    levelworm
    levelworm
    Apr 27, 2025 via Android
    41
    @kuanat #10
    请问大佬是做哪块逆向的?听君一席话。
    lait
    lait
    Apr 27, 2025 via Android
    42
    公司老项目,各种古老的插件,升级个 agp 版本问题超多,所以博客里写了好几篇 APG gradle Kotlin jdk 等版本相互兼容的内容,就是找重叠点,大家都好用的那个点。费老劲了🤦‍♂️
    headwindx
    headwindx
    Apr 28, 2025 via iPhone
    43
    @silvernoo 知足吧,有的项目,全量编译得 40 多分钟。就当开眼了
    hwb
    hwb
    Apr 28, 2025
    44
    @Romic 一棍子打死?
    aisles1
    aisles1
    Apr 28, 2025
    45
    @hwb #44 他都直接 AOE 所有人了,就顺从他吧
    cocomanber
    cocomanber
    Apr 28, 2025
    46
    公司里我主写 iOS ,也写过几个 flutter 项目,现在转而写安卓,“被 gradle ,android studio ,kotlin 还有何种插件依赖和兼容性的四重拷打中” ... 感同身受,这些玩意真是安卓入门的必躺坑,一头雾水中
    apples01
    apples01
    Apr 28, 2025
    47
    @Romic #7 你一棒子打死了一个行业的从业人员。明显他个人性格问题
    Romic
    Romic
    Apr 28, 2025
    48
    @apples01 有道理。 但是公司就一个安卓。IOS 就很棒。 没有对比就没有伤害。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2451 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 113ms · UTC 12:22 · PVG 20:22 · LAX 04:22 · JFK 07:22
    ♥ Do have faith in what you're doing.