Skip to main content

Qt的iOS预览版

Comments

原文链接: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 ..

Comments

Subscribe to our blog

Try Qt 6.11 Now!

Download the latest release here: www.qt.io/download

Qt 6.11 is now available, with new features and improvements for application developers and device creators.

We're Hiring

Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.