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

跨平台应用程序开发框架那家强?

  •  
  •   ac169 · 2023-06-28 18:10:09 +08:00 · 1899 次点击
    这是一个创建于 525 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求: 应用本身要实现的功能很常规,也就是一些比如,文件 /网络 /蓝牙等基础 IO 操作,不涉及到逻辑或渲染等复杂因素。主要要实现的是应用多平台支持(至少移动端 android / ios 必要支持,至于 windows / macos 有最好没有也无所谓),这个问题对于个人或者是小团队来说就比较棘手了。

    背景: 有 web 和 android / ios 原生应用(比较基础和简单)开发经历;对于桌面端跨平台框架 Qt 有过学习和了解经历。

    现状: 上述的经历距现在时间已经很久了,现在要再看一遍资料才能重新拿起来,并且 android 和 ios 开发语言和 SDK 等开发要素都在迭代,所以对于多平台一肩挑的情况原生开发难度和周期控制就很有问题了。

    认知: 根据目前浅薄的知识储备,跨平台技术主要为三类:

    1. H5 + 原生(微信小程序)
    2. JavaScript 开发 + 原生渲染( React Native )
    3. 自绘 UI + 原生( Flutter )

    当然每个大类下的具体框架和框架衍生出来的框架五花八门就更多了,根据目前的现实考虑,个人倾向在后两个大类中选择一个框架来实现,如果说个人对 Qt 有一个片面的了解的话,那么相比之下对于 Flutter 、React Native 的知识储备就完全是空白。也不太可能都学以遍再来选择,所以就有我关心的一些问题请教一下各位,问题如下:(为了避免重复,在之后面的描述中,三个跨平台框架指的是:Qt for mobile 、Flutter 、React Native 这三个跨平台框架)

    1. 三个跨平台框架开发的应用在功能种类和权限等和原生的是一样的吗;上架到应用商店( Google Play 和 App Store )在审核等方面和原生的待遇都一样吗?

    2. 三个跨平台框架都能开发不需要联机单机模式应用吗,就是框架及其生成的代码在本地不依赖任何网络资源就能运行。

    3. 三个跨平台框架除必要的 UI 封装和支持外,对常规的 IO 操作等有自己的封装和支持吗?比如:Qt 在桌面平台除了 UI 还对 File 、Socket 等做了封装,开发人员可以使用与平台无关的 IO 类和函数。不知道 Qt for mobile 、Flutter 、React Native 有没有做类似这样常用功能的封装?如果没有封装的话,涉及到 IO 等操作开发人员还得用回各自平台,那么就不是很有优势了!

    4. 三个跨平台框架生成目标平台代码和 APP 分别都是那种原理,是直接转换成对应平台的原生代码( Java 、OC )再编译,还是生成目标平台的本地库等形式的中间件然后由系统原生代码间接调用呢? 像 Qt 桌面生成的目标平台程序必须要 Qt 动态库支持或者是静态编译,这样弄下来目标应用可能比相同功能的原生应用大很多。

    5. 三个跨平台框架在 IDE 完成编码后可以无需任何修改在任何平台可以交叉编译生成所有支持平台的目标程序吗,还是需要吧代码移动到对应平台然后调整编译?比如:Go 语言可以在任何平台编写代码然后交叉编译生成目标平台应用。

    注: 由于一次性提的问题比较多,加之像什么性能问题,学习成本在一些框架对比的资料都有介绍,个人也已经考量过了,所以为了避免浪费大家的宝贵的时间,请大家就围绕上述问题结合自己实际的开发使用感受发表看法,不要拓展太多讨论,谢谢大家!

    4 条回复    2023-06-29 20:24:38 +08:00
    AvilCore
        1
    AvilCore  
       2023-06-29 00:16:29 +08:00 via Android   ❤️ 1
    只知道 rn

    1. h5 乐色。对原生功能支持看库,en 没记错的话地图支持似乎被诟病过
    2.都不需要
    3. 所有好的 rn 库从设计上都是一套 API 适用多平台,偶尔有平台限定的函数用法,封装的都是调用各平台的原生方式
    4. rn 是 js 引擎连接原生库 flutter 是谷歌自研 gpu 解释器 h5 就是封个 webview
    5. rn 打包依赖 gradle 和 Xcode 没 mac 打不了 ios 安卓随便打
    SSQQ
        2
    SSQQ  
       2023-06-29 11:55:14 +08:00
    fluttrer
    Yjhenan
        3
    Yjhenan  
       2023-06-29 16:19:56 +08:00
    ac169
        4
    ac169  
    OP
       2023-06-29 20:24:38 +08:00
    @Yjhenan .NET MAUI ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:46 · PVG 03:46 · LAX 11:46 · JFK 14:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.