IOS 上的 Qt QML 应用程序运行缓慢,JIT 已禁用

Qt QML application on IOS working slow, JIT is disabled

我正在为 iPhone 开发基于 QML 的应用程序,在 macbook IOS 11 (Sierra ).我使用Qt 5.9.1构建,最新版本为xCode。一切正常,但在 "Application output" 中有警告 “ QML 禁用了 JIT。属性 绑定和动画将非常 slow.Visit https://wiki.qt.io/V4 以了解适用于您的平台的可能解决方案。” 我试图通过编辑 qv4global_p.h 文件来启用 JIT,如上面网页所述,但它没有帮助。 我使用 IOS 模拟器(iPhones 6,7 和 IOS 11.0)进行调试和测试,动画效果(例如过渡、不透明度变化、按钮点击)非常缓慢且滞后,在输出控制台中显示有关手动更新 qml 对象的消息,例如 "doing manual update.."。我没有iPhone,所以我无法检查在真实设备上是否存在相同的问题,但似乎是这样,因为我阅读了类似的主题,但我没有找到任何信息。

那么,这个问题有什么解决方案吗?如何在 IOS 上获得流畅、正确的 qml 控件行为?也许具有商业许可证的 Qt Quick Compiler 可以帮助解决这个问题?请帮助,真的卡在这里..

您无法在您的 qv4global_p.h 上启用 JIT,如果您这样做,您可以在插入 mac 的设备上编译并 运行 您的应用程序,但是当您拔掉它,你的应用程序将停止并且不再 运行,问题来自 Apple,

3.3.2 An Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple's built-in WebKit framework.

试用 Qt 商业许可证的试用版并测试您的应用程序。 就我而言,经过一些测试后,我在 objectivC

中构建了我的应用程序

所以我尝试在真实设备上启动我的应用程序,它是 iPhone 6S,安装了 iOS 9.0,后来也更新到 iOS 11.0.3。应用程序正常 运行,至少我看不到任何滞后、性能不佳或动画缓慢,尽管有关于 JIT 的警告消息。希望在使应用程序变得更复杂后它能同样完美地工作,因为现在它只是 GUI,没有任何有用的后端。如果有可能在其他旧版本 iPhone 或平板电脑上进行检查,我会这样做并写在这里。 P.S。在紧急情况下,我还没有尝试过 Qt Quick Compiler。

在ios中你不能使用JIT编译器,但你可以提前尝试编译器:

http://doc.qt.io/qt-5/qtquick-deployment.html#qml-caching-for-deployment-preview

自 Qt 5.11 起,Qt Quick Compiler 现在可以使用开源 Qt 许可证。您可以使用它提前编译您的 QML 和 JS 源代码,也在 iOS 上。使用 V-Play Engine,您还可以获得 Qt iOS 和 Android 应用程序的原生外观。