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

326 天前
 ac169

需求: 应用本身要实现的功能很常规,也就是一些比如,文件 /网络 /蓝牙等基础 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 语言可以在任何平台编写代码然后交叉编译生成目标平台应用。

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

1653 次点击
所在节点    程序员
4 条回复
AvilCore
326 天前
只知道 rn

1. h5 乐色。对原生功能支持看库,en 没记错的话地图支持似乎被诟病过
2.都不需要
3. 所有好的 rn 库从设计上都是一套 API 适用多平台,偶尔有平台限定的函数用法,封装的都是调用各平台的原生方式
4. rn 是 js 引擎连接原生库 flutter 是谷歌自研 gpu 解释器 h5 就是封个 webview
5. rn 打包依赖 gradle 和 Xcode 没 mac 打不了 ios 安卓随便打
SSQQ
326 天前
fluttrer
Yjhenan
326 天前
ac169
325 天前
@Yjhenan .NET MAUI ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/952470

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX