V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nicefrp
V2EX  ›  Android

Android 开发体验没有 web 开发体验好

  •  
  •   nicefrp · 9 天前 · 3318 次点击

    最近开发安卓原生,用的是 Jetpack compose+kotlin ,最大的问题就是没有 hot reload ,改的东西不能实时预览,好难受啊

    37 条回复    2025-07-05 15:59:34 +08:00
    w568w
        1
    w568w  
       9 天前   ❤️ 1
    Jetpack compose 有实时预览( Live Preview )和热重载( Hot reload )啊。你确定你不是看漏了?或者你说的「热重载」是特指「写完代码后一瞬间更新界面」?
    DeweyReed
        2
    DeweyReed  
       9 天前   ❤️ 1
    完全正确。Live Edit 是个残废,另外 ADB Wifi 也是。
    KMP 的桌面端刚整了个 Compose 的 Hot Reload 。
    XTTX
        3
    XTTX  
       9 天前   ❤️ 1
    体验了一个月的 react-native expo, 已经吐了。各种 style 在压成 apk 后不生效。web 大部分情况下所见即所得。
    Lockroach
        4
    Lockroach  
       9 天前   ❤️ 1
    现在有 preview 的话的话稍微好点,不过开发体验上确实没有 web 好
    Donahue
        5
    Donahue  
       9 天前   ❤️ 1
    确实,之前尝试简单入门过 android 开发/react-native-expo 也玩了一下,都不太行,跟 web 开发的体验比起来有很大差距。
    magicls
        6
    magicls  
       9 天前 via Android   ❤️ 4
    10 年 android 开发表示:调 UI 只是最后一步。逻辑写完之前,所有 View 都先随便摆
    Helsing
        7
    Helsing  
       9 天前 via iPhone   ❤️ 1
    这个确实不好,历史包袱太多,Google 都搞不好
    realkaiway
        8
    realkaiway  
       9 天前   ❤️ 1
    @XTTX 老哥情况属实吗,我刚开始搞
    narmgalaxy
        9
    narmgalaxy  
       9 天前   ❤️ 2
    flutter 热重载还可以
    lisongeee
        10
    lisongeee  
       9 天前   ❤️ 1
    web 前端的热重载叫 hmr (Hot Module Replacement),运行机制基于 js 的 dynamic import

    《改的东西能实时预览》 这个是基于模块边界的局部刷新(无需刷新整体页面或重启进程)

    此外 hmr 要搭配 react/vue 这类 ui 框架才是体验最优,它们会定义一个模块边界(.tsx/.vue) 来实现组件级别的局部刷新,如果是搭配 jquery/原生 js 就是整体刷新页面,体验其实不咋地

    目前最流行的前端构建工具 vite 也能很方便去自定义单个文件 hmr 逻辑 https://cn.vite.dev/guide/api-hmr

    前端的 hmr 体验这块确实是天花板级别
    cybort
        11
    cybort  
       9 天前 via Android   ❤️ 1
    是这样的。堪比手写 css 然后导入进去的感觉
    WngShhng
        12
    WngShhng  
       9 天前   ❤️ 1
    体验越好,门槛越低
    sofukwird
        13
    sofukwird  
       9 天前 via Android   ❤️ 1
    那你用 flutter 呀,flutter 有 hot reload ,虽然在我机器上要 0.7s 比 web 的 0.2s 长但毕竟是有
    aresyang
        14
    aresyang  
       9 天前   ❤️ 1
    手动推 so 才是重工业
    apkapb
        15
    apkapb  
       9 天前   ❤️ 1
    jetpack compose 其实我觉得是已经算好的了;

    最起码我 web 全栈 开发安卓也算容易入门且能做一个算好看、好用的安卓了。

    至于这个刷新问题,只能说,你先多写一点,再预览
    XTTX
        16
    XTTX  
       9 天前   ❤️ 1
    @realkaiway expo 53, react 19, react native xxx 版本,各种各样的坑。 除非你写的是个玩具, 不然会有各式各样的坑。 但是就像上面老哥说的, 门槛越低,AI 会全面替代。
    realkaiway
        17
    realkaiway  
       9 天前 via iPhone   ❤️ 1
    @XTTX 东西倒不复杂,prebuild 也暂时正常,真遇到了这问题再慢慢排查吧,只能忍了,原生我也不会
    XTTX
        18
    XTTX  
       9 天前   ❤️ 1
    @realkaiway emulator 到 手机 Expo development 到 eas 压成 apk, 三个环境 正常情况下都是一致的。上点复杂点的拖拽就各种抽风。
    kldd529
        19
    kldd529  
       9 天前   ❤️ 1
    确实,就算 preview 也是慢半拍,还时不时报错预览不出来,vue vite 就很丝滑
    murmur
        20
    murmur  
       9 天前   ❤️ 1
    @XTTX 那个东西就是 react 而已,style 全要按照安卓的命名写平台版本,哎,坑的 1b ,被 h5 爆杀
    xiaoshan5733
        21
    xiaoshan5733  
       9 天前   ❤️ 1
    我用 expo 开发多端经验是先在 iOS 上开发,全部功能开发完成后再 Android 适配( Android 开发体验很差,模拟器真不想开),目前 iOS 、iPad 、Android 、tvOS 都有开发上线的 app 。
    如果真说有什么卡点,微信支付、支付宝支付这种需要原生 SDK 接入的情况吧,理论上用 expo module 也可以实现,可能要花点时间。
    jamel
        22
    jamel  
       9 天前   ❤️ 1
    idea eap 没有 kmp 插件,气死了,一直在等。又不想回退。

    准备 写个完整的 kmp 项目 包含 ios 、android 、web 、exe 。看看 kmp 到底咋样了
    LUO12826
        23
    LUO12826  
       9 天前   ❤️ 1
    对于带 UI 的开发 难道有比 Web 前端体验更好的么
    yanyao233
        24
    yanyao233  
       8 天前   ❤️ 1
    @XTTX #3 在使用 nativewind 时遇到了大量的样式不生效问题,不过只用 inlineStyle 我暂时还没遇到这些问题
    irisdev
        25
    irisdev  
       8 天前   ❤️ 1
    写界面的论开发体验其他的跟 web 前端都没法比
    nicefrp
        26
    nicefrp  
    OP
       8 天前
    @w568w 有在用 Live Edit ,但相对前端的 HRM ,开发体验还是相差太多了
    @DeweyReed Live Edit 体验还是不太行
    @magicls Android 大佬,现在 Android 开发套装怎么选?例如网络请求库、热更新 Hot Fix 之类的,一些 APP 都会用到的功能,以及他们的技术选型
    @narmgalaxy 前几个月搞 Flutter ,实时预览相对原生好点,但相对 web 还是太差了
    @lisongeee 嗯嗯,是的,hmr 这块前端确实天花板级别
    @sofukwird 不能这样的,这里讨论的是 Android 原生的开发体验,怎样提升开发速度,选 Flutter 是另一个话题了
    @LUO12826 目前我发现确实没有,哈哈
    XTTX
        27
    XTTX  
       8 天前   ❤️ 1
    @yanyao233 是的. nativewind 越用越烦。inline 有时候 margin 也不生效。 最吐的还是 expo dev 手机上 和最终的打包完之间的差距。
    halzhang
        28
    halzhang  
       8 天前   ❤️ 1
    确实,Android 开发改完编译运行,耗时都可以抽完一根烟
    yafoo
        29
    yafoo  
       8 天前 via Android   ❤️ 1
    对我这新手来说,安卓开发最大的问题就是编译失败
    zzjun
        30
    zzjun  
       8 天前   ❤️ 1
    Compose 体验已经很好了
    kapaseker
        31
    kapaseker  
       8 天前   ❤️ 1
    按道理 Jetpack compose 是有热重载的,但是这个不是万能的,有资源更新和类更新就不行了,得重新 run 。

    不过对我来讲,UI 我一般都是最后调整的,前期都是先把逻辑写完,UI 上有控件就行了。

    我 14 年开发过一段时间的 Web ,那个时候我是直接用 firefox 的代码段和 chrome 控制台直接调试代码,确实好用。Android 没有。
    Bichat
        32
    Bichat  
       8 天前   ❤️ 1
    想编译快你得用 flutter
    Nanosk
        33
    Nanosk  
       8 天前   ❤️ 1
    之前做 framework 的 ui 开发,每次改完要重新 build img ,然后刷机,那叫一个折磨。。
    unco020511
        34
    unco020511  
       7 天前   ❤️ 1
    那是体验没有那么好吗,是差得远好吧,android 的开发体验就从来没好过
    AoEiuV020JP
        35
    AoEiuV020JP  
       7 天前   ❤️ 1
    确实安卓的开发就给人感觉“不够现代”,明明 compose 已经是很新的技术了,但就是给人老掉牙的感觉,
    nicefrp
        36
    nicefrp  
    OP
       7 天前
    @halzhang 这个暂时没到那步,目前编译速度还行,可能还没有什么功能
    @yafoo 是的,感觉 android 的包管理比 npm 的包还难搞
    @kapaseker 最主要的是不像 web 可以在浏览器调试界面
    @Bichat 有项目上 Flutter 的,目前这个项目不上
    @Nanosk 哈哈哈
    @unco020511 确实
    @AoEiuV020JP 确实的,开发体验太差了,过段时间搞搞原生苹果,体会一下苹果的开发体验
    Venjer
        37
    Venjer  
       2 天前
    ui 部分 all in flutter 吧。除非用到直播 地图 webview 这些 surfaceceView ,某些情况下需要特殊处理。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5763 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:41 · PVG 10:41 · LAX 19:41 · JFK 22:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.