Компиляция Qt GUI под Android

Реально ли вообще скомпилировать проект Qt GUI под Android? Может есть какие-то отдельные плагины или компиляторы? Я просто никогда не имел дела с Android SDK, а сейчас нету времени учить. Стоит задача написать 100% кросс-платформенное приложение. А Qt по умолчанию не умеет компилировать под Android.
  • Вопрос задан
  • 4643 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
Zigmar
@Zigmar
«100% кросс-платформенности» можно добиться разве, что в играх, и то большими натяжками (все равно будут различия между девайсами и платформами), и то потому, что игры почти не требуют интеграции с ситемой и системными сервисами. Для приложений общего назначения требующего взаимодействия с устройством, вряд ли удасться добиться приемлемой кросплатформености, как в техническом плане, так и в концептуальным — например если просто перенести дизайн и воркфлоу приложения с айфона на андроид или наоборот то получится полная фигня (хотя тупые клиенты любят требовать «хочу чтоб прога под Андроид выглядила точно так-же как под Айфон»).
Тем не менее, хотя как я написал, 100% переносимости вряд ли получится добиться, есть всякие способы реюзать большие куски кода, например:
1. Писать бек-энд на С++, который поддерживается почти всеми основными мобильными платформами (за исключением WP7) а «морду» делать родную для каждой платформы. Оптимальный с точки зрения юзер-экспириенс вариант, но один из самых затратных по времени, хуже только полностью раздельный код под все платформы.
2. Воспользоваться одной из многочисленый библиотек для крос-платфоменой разработки. Позволит сократить время разработки, но имет свои недостатки — «неродной» look&feel (что простительно для полностью стилизованых интерфейсов игр, но не очень хорошо для нормальных приложений), плюс дополнильный уровень абстракции с дополнительными глюками и закидонами (которых в зоопарке мобильных устройст и платформ и так достаточно). Еще проблема таких библиотек, что часто они работают по принципу наименьшего общего знаменателя, без бубна предоставля доступ только к фичерами доступным на всех платформах, и то не всегда.

Конкретно насчет Qt — официальная версия Android не поддерживает и скомпилировать Qt под андроид NDK будет очень сложно. NDK предоставляет только минимальный набор API, немногим больше, чем только libc, libm, libgl и limstdc++, а соотвественно придется самому компилировать все зависимости. Насчет андроид порта указаного выше, насколько я знаю, проект еще очень сырой, и сомневаюсь, что он подходит для продакшена. Поиметь кросплатформеную библиотеку уровня Qt для Андроида было бы отлично (сам с нетерпением жду), но боюсь что до этого еще достаточно далеко.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы