Провести некоторые исследования возможности использования QT / QML для предстоящего проекта. Клиент хочет, чтобы это изначально было на настольных ПК с Windows и Mac, а в будущем появилась возможность iOS и Android. Они хотели бы знать, что то, что мы строим, будет двигаться относительно легко. Я не большой программист, но я вижу, что QML предназначен для работы с C ++. В результате должно быть относительно легко создать приложение, работающее на Mac и Windows, и iOS будет принимать C ++, поэтому я не вижу там много препятствий. Но я запутался в Android. Я вижу людей, говорящих о создании приложения для Android с использованием QML, но они все еще используют Java; Я полагаю, он использует NDK в фоновом режиме.
Но если вы напишите приложение, которое имеет QML для фронта и, и C ++ для любых внутренностей, не покрытых QML, может ли оно работать на Android? Или вам нужно переписать кусок C ++ в Java? Приложение не простое, поэтому нам придется предоставить некоторую логику за пределами QML, по крайней мере, так оно и выглядит. Несмотря на то, что мы могли бы сэкономить время и $$$, используя QT, чтобы не приходилось работать на десктопах и iOS, я вижу проблему с Android в будущем.
Но если вы напишите приложение, которое имеет QML для фронта и, и C ++ для любых внутренностей, не покрытых QML, может ли оно работать на Android? Или вам нужно переписать кусок C ++ в Java?
Это действительно зависит. Возможно, вам придется пройти через интерфейс Java, где платформа Android не предоставляет прямой и общедоступный API для определенных функций. Одним из примеров являются низкоуровневые операции ввода-вывода, такие как запись последовательного порта для устройств usb-serial, но это еще не все.
В общем, модули Qt и стороннее программное обеспечение на основе Qt используют дополнительный модуль QAndroidExtras, представленный в Qt 5.2. Это позволит легко интегрировать бэкэнд в вашу логику C ++.
Имея это в виду, вы можете скрыть детали реализации Java в фоновом режиме, в то же время поддерживая интерфейс C ++ в QML. Таким образом, это должно просто так работать.
Пожалуйста, ознакомьтесь со следующей документацией, чтобы понять это:
Здесь вы можете найти один из хороших примеров:
Qt Notifier — Демонстрирует вызов Java-кода из приложения Android.