对在即将进行的项目中使用 QT/QML 的可行性进行一些调查。客户最初希望它在 Windows 和 Mac 桌面上运行, future 也可能在 iOS 和 Android 上运行。他们想知道我们 build 的东西会相对容易移动。我不是一个桌面程序员,但我看到 QML 是为与 C++ 一起使用而设计的。因此,构建一个在 Mac 和 Windows 上运行的应用程序应该相对容易,而且 iOS 将接受 C++,所以我看不出有太多障碍。但我对 Android 感到困惑。我看到人们谈论使用 QML 构建 Android 应用程序,但他们似乎仍在使用 java;我猜它在后台使用了 NDK。
但是,如果您编写一个应用程序,前端使用 QML,QML 未涵盖的任何内容使用 C++,它可以在 Android 上运行吗?还是需要用java重写C++部分?该应用程序并不简单,因此我们必须在 QML 之外提供一些逻辑,至少看起来是这样。虽然通过使用 QT 不必在桌面和 iOS 上原生化,我们可能会节省时间和金钱,但我发现 Android future 会出现问题。
最佳答案
But if you write an application that has QML for the front and, and C++ for any guts not covered by QML, can it work on Android? Or do you need to rewrite the C++ piece in java?
这确实取决于。您可能需要通过 Java 接口(interface),而 Android 平台不为某些功能提供直接和公共(public)的 API。一个例子是低级 IO 操作,例如为 USB 串行设备编写串行端口,但还有更多内容。
一般来说,Qt模块和基于Qt的第三方软件所做的就是使用Qt 5.2中引入的QAndroidExtras附加模块。这将允许后端轻松集成到您的 C++ 逻辑中。
考虑到这一点,您可以在后台隐藏 Java 实现细节,同时仍然维护 QML 的 C++ 接口(interface)。因此,它应该以这种方式工作。
请参阅以下文档以掌握它:
在这里您可以找到这些很好的示例之一:
Qt Notifier - Demonstrates calling Java code from an Android application.
关于android - Android 上的 QML - C++ 适用于业务逻辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255418/