Qt的iOS预览版

作者:Liang Qi | Mar 7, 2013 6:50:34 AM

原文链接:Morten Johan Sørvig - Qt for iOS Preview

我们非常高兴能够把Qt带到一个新的平台。Qt计划在5.2正式支持iOS平台,发布时间大约是2013年年底。这次发布的内容目前还没有完全确定下来:可用的资源、平台或者应用程序商店的约束以及Qt现有的代码都在影响这个项目。本篇博客大概描述一下当前计划。

Qt 5.1将会包含一个预览版——上周五完成了一次合并。(译者注:dev分支是5.1的主流代码,上周五完成了一次从ios分支到dev分支的合并。)今天大家可以通过编译Qt源代码来看一看了。详细情况请参考下面的“让我们开始吧”一节。

开发和部署

开发和部署是在Xcode下完成的。目前所支持的工作流程是:维护一个基于.pro文件的项目,把它导出到Xcode(当项目设置发生变化时再次导出),然后使用Xcode编译和部署。源码编辑通常可以在任何编辑器下完成。

Qt 5架构

要理解不同的Qt模块所能获得的支持水平,需要对Qt 5的架构有所了解。在Qt 5中,有一套所有平台都实现了的公共API(Qt平台抽象——QPA)。Qt的iOS版项目的绝大多数工作都发生在这里,并且这也是整个团队将要支持的代码基础。QPA层同时支持着窗口部件(Widgets)和QML(1和2)。

风格(Styling)

Qt Mac风格(style)使用的是有OS X提供的HITheme API来绘制具有本地观感的UI元素。然而在iOS上没有这样的API,这也就是说创建一个像QMacStyle一样的QiOSStyle是不可能的。像Fusion风格这样的跨平台风格还是可用的。未来有关风格的工作将主要围绕Qt Quick 2的控件进行。

Qt Quick 2: JavaScript引擎和JIT

Qt Quick 2使用了V8 JavaScript引擎,因为平台政策以及V8使用了JIT编译器所导致的技术限制,它不能被部署到iOS平台上。这也就是说现在还没有iOS平台上的Qt Quick 2。这个问题我们已经知道,并且正在努力寻找解决方案。

今天有什么已经能工作了

  • Widgets
  • Graphics View
  • Qt Quick 1
  • OpenGL
  • Touch events
  • Orientation events
  • ++

QUIt Coding提供的Qt5 Cinematic Experience,已经迁移到Qt Quick 1并且运行在iPad上

让我们开始吧

  • 家庭作业:设置Xcode用于开发(需要认证、配置设备等)。测试部署一个标准的Xcode应用程序模板。请确认已经安装了Git。
  • clone qtbase

git clone git://gitorious.org/qt/qtbase.git qtbase-ios
cd qtbase-ios/
git checkout dev
[可选(当前的开发分支): git checkout ios]
  • 为设备或者模拟器构建QtBase。注意:和Qt 4不同,Qt 5不支持多架构的构建。
configure -xplatform unsupported/macx-ios-clang -developer-build -nomake examples -nomake tests -release [-sdk iphonesimulator]
make
  • 获得简单的实例:
git clone git://github.com/msorvig/qt-ios-demo.git
cd qt-ios-demo
../qtbase-ios/bin/qmake
open qt-ios-demo.xcodeproj

更新:构建Qt Quick 1

你需要完整的Qt源代码,请参考构建来自Git的Qt 5。然后构建QtScript和QtQuick1两个模块:

cd qtscript; ../qtbase/bin/qmake; make; cd ..
cd qtquick1; ../qtbase/bin/qmake; make; cd ..