Skip to main content

基于UIKit的验证概念的新Lighthouse平台

Comments

原文链接:Eike Ziller - New proof-of-concept UIKit based Lighthouse platform

也许没有Android移植那样令人兴奋(但也许会比新的INTEGRITY平台更加振奋人心,至少对于我是这样的 ;) ),我刚刚将一个新的概念验证性的、基于UIKit的Lighthouse插件实现提交到qt-lighthouse代码仓库中。

这意味着,如果您仔细地遵照附带的README文件中的使用说明(在qt-lighthouse代码仓库中的src/plugins/platforms/uikit/中),您应该可以能够针对iOS模拟器和设备目标构建(部分)Qt,并且运行一些简单的Qt Quick应用程序。我不得不强调,这不是一个真正的iOS移植,并且也不会以任何方式被支持。很有可能Qt的很多部分都不工作,甚至这些部分都不能编译,更不用提那些我甚至都没有试图编译的部分。

即便如此,鉴于QML技术如此之酷,这个小项目的目标就是让一些简单的QML应用程序可以运行在iPhone上, 以检验Lighthouse在技术上是否可以完成这个任务。

编译和链接Qt(然后它可以真正地运行)

这个过程绝对是最冗长的部分,而且需要心理足够强大能够承受巨大的挫折。我面对过很多问题,例如抱怨一些处理器指令不可用等链接错误,以及在代码运行时方法返回值和变量突然改变或者归零等,直到后来我发现是底层mac平台gcc的mkspec设置了桌面相关的环境变量, 扰乱了iOS部分。将这部分修正得差不多正确了之后,因为iOS基本上是一个POSIX平台,所以大部分编译和链接“能直接工作”。

Lighthouse平台插件

我采用了一个比较容易的路径,就是Cocoa平台插件实例中所做的,例如在UIView中显示(blip)QImage。当然这不是最有效率的方式(因为在运行QML的flickr演示程序的时候就可以很容易地看到这一点),但是和我们的快速概念验证的目的很适合。尽管还有一些挑战,例如在集成事件循环时,如果一个iOS应用程序没有尽快调用UIApplicationMain就会导致它会被系统杀死。

结果

Lighthouse可以在它上面运行了(至少是现在,在打过一些小补丁之后),并且QML非常酷的技术;)。并且我必须说,从Lighthouse角度来讲,它已经非常好了;从其它部分的角度来讲,它至少是一个有启迪作用(哈哈)的经验。

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.