速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用 V-Play 实现基于 Qt 的跨平台原生移动应用开发

  • 2015-11-10
  • 本文字数:2232 字

    阅读完需:约 7 分钟

V-Play 是一个基于 Qt 的桌面和移动设备跨平台解决方案。它旨在让开发者更加方便的通过使用 JavaScript 和 QML (Qt 5 声明式语言)创建应用。V-Play 支持 iOS、Android、WindowsPhone、BlackBerry 和其他移动平台。InfoQ 有幸采访到了 V-Play CEO 与联合创始人 Christian Feldbacher 就 V-Play 展开了讨论。

V-Play 旨在提供原生应用般的外观和感受,其 C++ 后段确保了高性能,Qt Quick 模块提供了简单的动画实现。这也使得可以通过集成自定义 C++、Objective-C 或者 Java 代码来使用特定于平台的功能。

V-Play 最初诞生于一个 2D 游戏开发引擎,最近扩展成提供通用移动应用开发。这里有一个示例,展示了如何通过 QML 声明一个使用现成 V-Play 用户界面组件的简单“Hello World”应用:

复制代码
import VPlayApps 1.0
App {
Page {
AppText { text: "Hello World" }
}
}

V-Play 提供了大量组件,包括用户界面、多媒体、网络等。重要的是,V-Play 提供的所有组件都使用C++ 实现,这确保了最佳的性能。V-Play 同时宣称,归功于QML,用户可以比直接使用C++ 少写十分之一的代码。V-Play 提供了许多示例应用,包括Twitter 应用、消息应用、天气应用。

InfoQ 和 V-Play CEO 和联合创始人 Christian Feldbacher 进行了访谈,以详细了解他们的产品。

请描述下V-Play的演化史?

V-Play 基于 Qt 框架,它已经非常适合应用开发。主要因为这些核心优势:

  • QML(Qt 元语言,Qt Meta Language):一种完全支持 JavaScript 的声明式脚本语言,可以在大量节省代码的前提下实现应用逻辑和其他功能。同时,QML 也易于学习和理解。
  • 动画用户界面和自定义主题:这些功能在 QML 中非常易于实现,同时这些功能对于移动应用来说变得越来越重要,QML 适用于移动开发。
  • 原生应用性能:Qt 应用的渲染使用的场景图渲染器,在一年前刚由 Qt 团队针对移动平台进行过重新设计和优化。这使得移动应用拥有非常好的性能。另外,Qt 框架自身使用 C++ 编写,使得它更加原生。

因此,我们已经在内部应用开发和移动应用项目中使用 Qt 和其他 V-Play 游戏组件有一段时间了。在过程中,我们注意到我们可以在不同移动应用中重用许多新的内部组件来加速产品开发周期。

这就是 V-Play 应用 SDK 的起点:使用 Qt 框架创建移动组件,来简化应用开发。这些组件允许开发者编写响应式应用,可以自动适配智能手机和平板或者纵向、横向的变化。同时,开发者也无需针对平台的修改,即可在 iOS 和 Android 平台上都能够有原生用户体验。

在多个应用中使用了 SDK,并对 API 进行微调之后,我们最终在 2015 年 8 月发布了第一个公开版本。

移动跨平台竞技场已经非常拥挤,你们带来的产品的主要优势是什么?

在我们的移动开发团队,我们有许多移动应用开发经验,这可以追溯到 iPhone 1 和 Google G1 发布的时候。在过去的 8 年中,开发领域发生了许多变化:刚开始原生 iOS 和 Android 开发是唯一的选择,然后越来越多的框架发布,允许跨平台开发。

过去,我们使用很多这类框架进行开发工作,目前仍然会有一些场景选择或者推荐原生 Obj-C 或者 Java 开发。然而,对于主要的移动应用,一个跨平台框架是节省时间和成本的最佳途径。

如果使用基于 HTML5 的框架,和类似 Qt 或者 V-Play 这些原生框架相比,会有较差的用户体验和性能。另一方面,诸如 Xamarin 工具会需要编写大量代码来实现动画等功能。

有了 V-Play,我们的使命是创建一个易于使用的应用框架,同时保留原生应用的性能、外观和感受,就像我们做了 V-Play 游戏引擎。

事实上,QML 实现快速开发可以在我们提供的示例应用中体现:例如 Twitter 应用(SDK 中自带了它的所有源码),只有 500 行代码,其中包括了访问 Twitter REST API 还有和 Twitter 原生应用相同的动画。用户可以在这里亲自查看和在自己手机上测试这个应用。

同时,由于 QML 构建于 JavaScript 之上,开发者可以轻松的学习这个框架。大部分开发者报告说他们能够在一天后进行生产开发。因此,对新开发者的学习曲线是非常平缓的。research2guidance 的跨平台工具去年报告显示:V-Play 在时间节省和容易学习项上得分第一,领先于其他诸如 Xamarin、KonyOne 和 Titanium 等工具。(全世界 2188 名开发者参与)

V-Play**** 最近支持了移动应用,你要添加的下一个重要功能是什么?

我们会投入大量精力在增加更多的示例应用程序上,这样开发者可以将它们作为自己移动应用的起点,例如一个导航应用或者一个新闻应用。此外,在列表的顶部是改进工具:通过 V-Play 构建服务,开发者可以将应用快速部署到多个 iOS 和 Android 设备上,而无需在工作电脑上安装任何 SDK。同时,这也将会使得在 Windows 平台上开发 iPhone 或者 iPad 应用成为可能。

然而,我们也仔细聆听来自社区的功能要求。因此,如果一个功能经常被要求,我们将会优先考虑。最后,我们想要做的就是通过 V-Play 应用 SDK,能够让跨平台移动应用开发更为便捷。在过去的 4 年中,我们已经了解到这个目标可以通过和社区开发者协作,更好的的来完成。

V-Play 提供免费版本以供开发者试用平台和构建局限性的应用,这些限制包括无法使用V-Play 自己的应用内购买和移动广告插件等。

查看英文原文: V-Play Enables Qt-based Cross-platform Native Mobile App Development


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-10 18:003349

评论

发布
暂无评论
发现更多内容

.NET 6新东西--PeriodicTimer

喵叔

28天写作 12月日更

从一个乙方视角聊聊敏捷项目

Bruce Talk

Scrum 敏捷 随笔 Agile

什么是QA

homber

QA 测试开发 职场新人 签约计划第二季

Prometheus Exporter (十七)JMX Exporter

耳东@Erdong

JMX Prometheus 28天写作 exporter 12月日更

从0到1普及前端知识 | 内容合集

你好bk

内容合集 签约计划第二季

netty系列之:手持framecodec神器,创建多路复用http2客户端

程序那些事

Netty HTTP 程序那些事 http2 12月日更

如何通过Kubernetes事件来报告错误

Robert Lu

#Kubernetes#

斯诺克

Tiger

28天写作

JavaScript 数据结构之 Map

devpoint

set map ES6 内容合集 签约计划第二季

音视频实战(3)- Mac 系统 MediaInfo 多实例媒体信息分析

liuzhen007

签约计划第二季

搭建基本Jest测试框架,解读覆盖率实现原理

梁龙先森

签约计划第二季

http协议

en

HTTP

Go并不需要Java风格的GC

Robert Lu

Go 垃圾回收

JavaScript 数据结构之 Object

devpoint

ES6 Object 内容合集 签约计划第二季

JavaScript 数据结构之 Set

devpoint

set ES6 内容合集 签约计划第二季

idea-如何解决代码合并冲突?

Java个体户

IDEA

架构实战营,第一周作业

Jude

架构实战营

勿拖延

Nydia

JavaScript 数据结构之 Number

devpoint

ES6 math 内容合集 签约计划第二季

架构实战营模块九作业

Geek_d18264

架构实战营

Camtasia添加光标效果教程

淋雨

Camtasia

实用机器学习笔记四:数据标注

打工人!

机器学习 学习笔记 12月日更 实用机器学习

音视频理论(2)- 音视频传输协议之 RTMP

liuzhen007

签约计划第二季

JavaScript数据结构实用集

devpoint

JavaScript 数据结构 内容合集 签约计划第二季

架构实战营毕业总结

Geek_d18264

架构实战营

关于研发效能推进提升的一点感受

homber

DevOps 研发效能 签约计划第二季

左耳听风,右手敲码

homber

成长 感悟 竞争力 签约计划第二季

华为中国大学生ICT大赛2021实践赛网络赛道晋级赛试题解析(答案版)

小韩

华为 网络 ICT

音视频实战(2)- 如何在网页端给视频添加硬水印

liuzhen007

签约计划第二季

音视频实战(4)- 常见流媒体服务器方案对比分析

liuzhen007

签约计划第二季

4.《重学 JAVA》—基础语法

杨鹏Geek

Java 25 周年 28天写作 12月日更

使用V-Play实现基于Qt的跨平台原生移动应用开发_JavaScript_Sergio De Simone_InfoQ精选文章