V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
NewYear
V2EX  ›  问与答

据说 NTQQ 桌面版是 Electron,那移动版是什么开发的呢?

  •  
  •   NewYear · 70 天前 · 2210 次点击
    这是一个创建于 70 天前的主题,其中的信息可能已经有所发展或是发生改变。
    很多软件的桌面端都使用 Electron ,但我搜了很久,却几乎没人提到他们的手机端是用什么开发的。Electron 是基于 Chromium 和 node.js 的,这俩玩意至少也能在安卓运行,为何却不支持手机端呢。

    例如 NTQQ 号称大一统,我估摸着意思应该是开放环境是统一的?或者当中用到的类、库是统一的?或者干脆就是一个项目?

    翻阅了很久,网页技术跨平台基本上都推荐 Electron ,好吧我也认同毕竟用的软件太多了,但是!移动端都用什么呢?毕竟主流软件都是有桌面端和手机端的,但大家似乎都闭口不言了(就像有什么隐秘,大家默契的选择了不告诉别人)。

    我想问的是,桌面端跨平台用 Electron 已经够了,但桌面已经写了一套,没理由不把各种代码共享给手机端吧,这样手机端开发起来就不会有什么差异了(逻辑、数据)。

    所以如何在有了 Electron 桌面端项目,尽可能用这套代码去开发手机端(移动端)呢?国内这么多软件,大家普遍采用什么方案呢?

    这里不聊全平台跨平台(已经看到了大部分人会推荐 Flutter),这里只聊 Electron 的移动端解决方案。
    16 条回复    2024-09-17 12:54:07 +08:00
    sugarkeek
        1
    sugarkeek  
       70 天前   ❤️ 1
    留点岗位给移动端吧🥹
    fgt1t5y
        2
    fgt1t5y  
       70 天前   ❤️ 1
    手机版还是原生的吧,当然也有挺多 H5 的部分。
    dreamk
        3
    dreamk  
       70 天前   ❤️ 1
    ios 限制使用除自家外的浏览器内核吧,所以 electron 不能发布到 ios 上。如果是 react 写的,可以迁移到 rn ,逻辑全部复用就行了
    但 js[桥接原生模块]( https://github.com/redbadger/crux)会有性能问题
    fuzzsh
        4
    fuzzsh  
       70 天前 via Android   ❤️ 2
    腾讯有文章透露过 QQNT 的技术框架,搜看下

    iOS Android 还是用原生来着,就 windows macOS linux 用了 electron 做渲染
    NewYear
        5
    NewYear  
    OP
       69 天前
    @sugarkeek
    哈哈,不至于,Flutter 已经出来了几年了,原生跨平台桌面端+移动端+Web 端。

    @fgt1t5y
    H5 一般用什么解决方案呢,目前知道的 uniapp 之类的听说 bug 多多

    @dreamk
    RN 用的普遍吗,好像现在能跨平台手机+桌面的都不怎么好,bug 多。。。。2024 年目前各种都是推荐 Flutter 了
    NewYear
        6
    NewYear  
    OP
       69 天前
    @fuzzsh

    原来如此,一直期待着简单点,让我等也玩一玩,哈哈,原生的难搞难搞。看来 Flutter 才是真的做到了比较高的程度,现在普遍都推这个。
    jim9606
        7
    jim9606  
       69 天前   ❤️ 1
    QQNT 的大一统是为了桌面平台的大一统,可以方便支持各种国产 linux 和 WoA ,老 QQ 原本深度耦合 MFC ,后逐步迁移到自研 Hummer 框架,跨平台不那么容易。
    至于手机桌面统一路线那就不见得很有必要了,毕竟交互 UI 啥的本来就要写两套的,强行统一并不能减少维护量还要付不小的迁移代价。
    这跟生于移动端的平台不一样,后有桌面端的应用会选择尽量沿用移动端的路线,一是从零开始不存在迁移成本之说,而且沿用路线可以直接调原有的人力和流程去做,不用费劲重新组团队。
    实际上 QQNT 相比老版的好处还没体现出来,虽然我个人偏好这个新架构客户端,但不否认其性能和功能在短期内都不会超过老版,我也没少听人嫌弃这个新版。
    Donaldo
        8
    Donaldo  
       69 天前
    根据我用着的手感,我估计也不是原生的。。就和微信比一比就知道了,qq 的操作总感觉比触摸慢半拍。
    NewYear
        9
    NewYear  
    OP
       69 天前
    @jim9606

    我也讨厌这个新版,手机版已经打算退回 8.9.X 了,原因是 9.0 开始每天会把各种图标标记上红点(未读),必须每天全部点一遍才能消失,逼死强迫症,强迫“点广告”。
    电脑版不兼容旧版,管理消息也没有以前那么完整的功能。。。。(比如备份聊天记录成文件并可以恢复)

    可能是受限于 KPI 、盈利的压力,但这些负面特性基本上是赶人走了……(如果继续这样,毫不意外我会彻底不用 QQ ,目前我还是 QQ VIP )

    架构上的优秀倒没有体验,毕竟直接放弃了,只是作为开发兴趣想了解一下。。这样自己也能偷懒开发点有趣的东西。。。我所认为的跨平台是有的逻辑只要开发一次就可以了,不用写 2 次代码,也避免了逻辑上的差异/bug 。


    @Donaldo
    也不知道是什么开发的,目前没找到资料确认是什么开发的。。。打开 APK 看了下,也没看懂,好像是原生的。
    jim9606
        10
    jim9606  
       69 天前   ❤️ 1
    @NewYear
    好写代码可以是指人好招好培训,你觉得招个 c++客户端程序和 web 前端程序哪个更容易。
    真要偷懒只写一遍那就把移动版的界面拉长硬搬到桌面上,我们一般称这种为暴力移植。
    你说的那些新版的问题就是迁移成本。
    自己小打小闹肯定考虑开源方案做基础吧,反正你也不可能有精力自己写一套 UI 轮子,就算有,大概率不如现成的好用。这跟 QQ 当年的行业情况不一样,那时自造轮子算是基础需求。
    ysc3839
        11
    ysc3839  
       69 天前 via Android   ❤️ 1
    @jim9606 没记错的话,QQ 使用 MFC 已经是 2008 年之前的事了,从 QQ 2009 开始改用全新研发的“TXGuiFoundation”,应该已经不依赖 MFC 了。
    现在换掉 TXGuiFoundation ,应该是因为懂 Windows 开发的人越来越少,维护成本过高,且 TXGuiFoundation 似乎一直不支持 GPU 加速,界面复杂度提升上去后性能越来越差。
    ysc3839
        12
    ysc3839  
       69 天前 via Android
    Electron 不支持移动端可能是因为进程模型等不一样?
    Electron 是先启动 Node.js ,执行入口 js 脚本,然后 js 脚本中可以选择创建 Chromium 窗口。
    但是 Android 是启动应用中的一个 Activity ,不好对接 Electron 原本的那种流程。
    jeesk
        13
    jeesk  
       69 天前 via Android
    手机 qq 是原生加 h5 。 比如个人资料,扫描后就是跳转 就是 h5 页面。
    NewYear
        14
    NewYear  
    OP
       68 天前
    @ysc3839

    Chromium 有移动版啊,理论上不应该有问题的。
    ysc3839
        15
    ysc3839  
       68 天前 via Android
    @NewYear 移动版和桌面版差异过大,不好移植。Chromium Android 至今没法避免网页把整个浏览器卡住,而这个特性在桌面版上大概 16 年前的 2008 年就有了。
    NewYear
        16
    NewYear  
    OP
       68 天前
    @ysc3839

    好吧,不过我仍然是觉得有比没有好。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2966 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:44 · PVG 22:44 · LAX 06:44 · JFK 09:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.