android - Android 上的 QML - C++ 适用于业务逻辑吗?

标签 android c++ qt qml qtandroidextras

对在即将进行的项目中使用 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 Android Extras

在这里您可以找到这些很好的示例之一:

Qt Notifier - Demonstrates calling Java code from an Android application.

关于android - Android 上的 QML - C++ 适用于业务逻辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255418/

相关文章:

java - 如何覆盖 Activity 中按下后退的共享元素平滑过渡?

java - 如何在 List<TextView> android 中查找字符串

java - 如何制作一个 TextView 来绕过 Android 中的其他 TextView?

c++ - 需要帮助将 32 位整数 r 转换为字符

sqlite - 在 qt 中使用 sqlite 数据库

java - Android 应用中的 Admob 广告问题

c++ - pragma once inside 和 outside 之间的区别包括守卫?

c++ - 什么是二进制可升级性?

c++ - QT在windows7/8上始终在最前面

c++ - Qt 中的 Tab 键顺序