原文链接: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角度来讲,它已经非常好了;从其它部分的角度来讲,它至少是一个有启迪作用(哈哈)的经验。