购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 QtonAndroid的前世今生

Qt是Digia所有(最初由奇趣科技创建后由诺基亚收购,再后来被Digia收购)的一个跨平台的C++图形用户界面应用程序框架,它提供了应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt是完全面向对象的,支持插件式编程,非常灵活且易于扩展。

在Qt on Android诞生之前,Qt已经支持Windows、Linux、Mac OS X等平台,并且在智能手机操作系统领域,支持Windows Mobile、Symbian、Meego等平台。

然而,已经成为智能手机领域举足轻重的平台——Android,由于只支持使用Java开发应用(对C/C++开发的支持十分有限),众多的C/C++应用开发程序员只能望洋兴叹或者痛苦转型。BogDan Vatra是这些开发者中非常独特的一位,他没有被Android的语言限制所束缚,而是尝试着要在Android平台的围墙上打一个面向C/C++开发者的洞。

2009年6月,BogDan Vatra作为一个资深的Linux开发者加入了ROUTE 66。他的第一个任务是把现有的导航引擎移植到安卓平台上。那时候Google还没有发布任何的官方NDK,所以BogDan Vatra必须自己从Android源码创建一个他自己的NDK。

不久以后,BogDan Vatra完成了一个可以在Android上工作的引擎。BogDan Vatra开始喜欢Android了,但是他总觉得缺了点东西,而且是他非常关注非常在意的东西——那就是Qt,BogDan Vatra最钟爱的应用开发框架。BogDan Vatra决定为它(Qt)做点什么。

2009年的10月份,Nokia(BogDan Vatra在其Qt on Android Episode 1中感慨:嗯,那时候Qt归Nokia所有,什么日子啊……)发布了Lighthouse项目。Lighthouse项目的创建,是为了让开发者们更方便地把Qt移植到任意的平台上。

2009年12月后期(大概是圣诞节之后),BogDan Vatra有了足够的空闲,他准备开始移植工作。他选择了Lighthouse项目,尽管它还是一个非常年轻的研究性项目。据BogDan Vatra所说,他的Android移植,是第一个使用Lighthouse的移植。仅仅过了一个月(2010年1月),BogDan Vatra在他的手机上看到了Qt绘制出来的第一个图形。BogDan Vatra非常兴奋,那一刻的感觉,实在是妙不可言。

几个月后,当Qt达到一个相对良好的状态后,BogDan Vatra开始了Qt Creator插件和Ministro(注:Ministro是一个全局的Qt共享库安装服务,用户只需要安装一次,就可以在运行于同一设备上的多个使用Qt的应用之间共享Qt库)的工作。这个Qt Creator插件使得开发者可以非常方便地在安卓设备或模拟器上管理、开发、部署、运行、调试Qt应用程序。

看起来几乎一切都到位了,可还是没多少人愿意使用(Qt for Android),因为他们必须手动编译所有东西,这实在是件麻烦事儿,因此BogDan Vatra决定做点儿工作来简化使用过程。

2011年,在Nokia宣布他们的重大战略转移(正式时间为2011年2月11日)的一个星期之后(应该是在2011年2月18日),BogDan Vatra发布了第一个可用的Qt Android SDK。这也是Necessitas项目的开始,之后它获得了巨大的成功。

Necessitas项目的出现,使得在任何Android平台上部署现存的Qt软件这一愿望成为现实。Necessitas项目目标远大,一旦你在某一Android平台上编译并部署了你的Qt应用,就可以在其他更新的Android平台上使用,几年之内都不必再重新编译。

大神BogDan Vatra给我们送福音来了,Necessitas套件源码基于BSD条款发布,基于BSD条款发布的软件,开发者可以永久、自由、免费地使用。广大的C/C++应用开发者,Qt框架的拥趸,从那一刻(Necessitas Suite的第一个版本发布之时)开始,我们可以使用一流的IDE(Qt Creator)创建、管理、编译、调试和部署基于Qt的Android应用。

为了实现Necessitas项目的愿景——保持Qt的强大和对所有人免费(这点与KDE目标一致),BodDan Vatra决定加入KDE,在它的帮助和佑护下继续Necessitas项目。

最初发布的Qt Android SDK只能在Linux下使用。很快地,RayDonnelly联系了BogDan Vatra并且把SDK移植到了Windows和Mac上。如果你在这些平台上使用Necessitas(和Qt 5Android SDK),你应该感谢Ray Donnelly。在此之后,BogDan Vatra带领他的团队(Ray及其他人)完成了Necessitas SDK的很多次发布。

2011年3月份,芬兰的Digia公司从Nokia获得了Qt的商业许可和服务业务。

2012年8月9日,诺基亚为了保持盈利,继续分拆资产,将Qt软件剩下的股份出售给Digia。从此之后,Qt归Digia所有!

而就在8月9日这天,Digia表示他们计划将Qt运用到手机操作系统中,如Google的Android、苹果的iOS和微软的Windowns Phone系统。

2012年11月,为了Qt 5的整合,我们亲爱的大神BogDan Vatra秉持开源、自由之精神向Qt Project贡献了Necessitas项目的Qt on Android的移植版本。

2013年7月3日,Digia公司Qt开发团队在其官方博客(http://blog.qt.digia.com/)上宣布Qt 5.1正式版发布。该版本的一个重大变化,就是引入了对Android和iOS的支持。Qt开发团队在其官方博客上给出了Qt 5.1的Qt for Android以及iOS的功能预览演示,并且表示,Qt for Android的最终版本,将会与Qt 5.2共同发布。

Digia公司的Qt开发团队所说的Qt for Android功能,正是在BogDan Vatra贡献的项目基础上整合、演进而来。根据BogDan Vatra的说法:只有Qt 5是在Qt Project的佑护下开发的,Qt 4仍由KDE Necessitas项目所拥有。

2013年12月12日,Qt开发团队在其官方博客上宣布Qt 5.2版本正式发布,该版本也正式发布了Qt on Android(注意:Qt开发团队在发布5.1版本时将对Android的支持称为Qt for Android)和iOS。

Qt SDK 5.2携带了Qt Creator 3.0和预编译的针对Android平台的Qt库。至此,我们终于可以使用官方的发行版本来针对Android平台开发我们的应用了(注:本书的内容正是基于此版本展开)。

2014年5月20日,Qt开发团队正式宣布Qt 5.3版本发布。Qt 5.3中,Qt BlueTooth和Qt Positioning两个模块正式支持Android。其他与Qt 5.2相比没有太大变化(本书部分章节会提及Qt 5.3的相关变化)。

而我们最爱的大神BogDan Vatra,作为Qt on Android的缔造者,现在是KDAB(http://www.kdab.com)的骨灰级专家,虽隐身幕后,仍孜孜不倦地规划、打磨着Qt on Android这枚神器。我们也相信,在大神BogDan Vatra和Digia Qt开发团队的努力下,Qt on Android的明天会越来越好。

最后,让我们看看Qt on Android的当前状态,看看你能使用Qt on Android的哪些功能。

Qt框架核心模块状态见表1-1。

表1-1 Qt核心模块在Android上的状态

Qt诸多扩展模块的状态见表1-2。

表1-2 Qt扩展模块在Android上的状态

续表

BogDan Vatra简介

BogDan Vatra,2014年34岁(刚巧与笔者同岁),居住在罗马尼亚中部的布拉索夫城。

BogDan Vatra有13年多的C/C++开发经验,11年多的Qt开发经验。BogDan Vatra主导开发过多个开源项目,eXaro(exaro.sf.net)、Necessitas、Ministro(Qt on Andriod)是比较著名且有影响力的三个。

eXaro是基于Qt的、开源的、免费的报表引擎,与Windows下的水晶报表类似。

Necessitas是由BogDan Vatra创建的开源项目,是针对Android平台的Qt移植版本,在发布后大获成功。后来BogDan Vatra将其中的一个移植版本贡献给Qt Project,是Qt 5.2中Android功能的前身。

Ministro是BogDan Vatra为了在同一Android设备上多个使用Qt的应用之间共享Qt库而设计的解决方案。

BogDan目前为KDAB进行开发工作。 HppWuFJsra/ms5nwkK8R7JEK0G7stWNgmGH2qZg7edyUREjH/lEiIBQXiUuA2TaX

点击中间区域
呼出菜单
上一章
目录
下一章
×