LINUX.ORG.RU

Qt for Android

 ,


0

1

Хотелось бы услышать мнение о сабже от людей, которые его тыкали более глубоко, чем простой запуск Hello world (это я уже сделал). Раньше тыкал его пару лет назад и помню, что он был сыроват (в том плане, что некоторые базовые вещи работали не совсем хорошо, вплоть до каких-то проблем с кнопкой «Назад»), но уже не помню, что мне не понравилось, чтобы проверить. Как оно сегодня? Production ready или нет?

С ходу могу назвать два преимущества - Qt API куда продуманней графической библиотеки Android, которая состоит из кучи прослоек совместимости, которые при этом не дают идентичного поведения на разных версиях ОС («прослойка совместимости» даёт лишь заглушки, либо простейшие реализации нужных функций, чтобы приложение просто не упало из-за ненайденных классов на старых версиях ОС). А второе - возможность легче поддерживать несколько платформ (например, Desktop + iOS + Android, бизнес-логику и немалую часть интерфейса можно делать общими).

Пока знаю и как минимум один недостаток - приложение будет весить не меньше около 20 мегабайт, потому что Qt жирный (дефолтные библиотеки Android включены в ОС, это не значит, что они менее жирные).

Помимо общих впечатлений интересуют и конкретные вопросы:

1) Qt достаточно допилен для Android, чтобы пришлось писать свой Java-код только для каких-нибудь специфических вещей типа виджетов?

2) Qt обеспечивает не худшую производительность (в теории C++ быстрее жабы, но на практике многое зависит от качества кода и того, и другого)?

3) Ситуация с лицензией аналогична десктопной версии? То есть, несмотря на активное навязывание платной версии на официальном сайте, на самом деле имеется лишь обязанность раскрывать в OpenSource правки в сам Qt (что для большинства проектов не является критичным, либо вовсе не требуется), а прикладное приложение по-прежнему может быть закрытым.

Ну и да. QWidget или QML? Первое я хорошо знаю, но когда-то где-то слышал, мол сейчас в основном разработчиками Qt пилится второе.

★★★★★

Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от KivApple

Для сервисов на Android в Qt вроде есть вот что: http://doc.qt.io/qt-5/androidservices.html (но я не пробовал).

Да, я знаю. Но суть не в этом, а в том что скрестить все вместе, например, чтобы сервис уведомлял о чем-то активити, которое в бекграунде.

Или, например, чтобы QtLocation приложение работало в бекграунде и получало координаты и, например, слало по сети.

Я не Андройд гугу, но недавно столкнулся с фигней, которая заключается в том, что, например, если у тебя есть C++ код и какой-то ГУЙ на QML, и приложение уходт в бекграунд - то C++ код продолжает работать (например, сокеты), а вот GUI останавливается. И как сделать, чтобы он обновлялся и в бекграунде - хз (А это ну оочень нужно, т.к. мне нужно периодически граббить содержимое некоего айтема в картинку и передавать по сети, и, оно все идет лесом когда приложение уходит в фон. Ну да ладно, это к теме не относится).

ЗЫ: Переучиваться на JAVA уж оочень не хочется и ковыряться во всех кишках андройда.. Хочется написать код и забыть как страшный сон. ))

kuzulis ★★
()
Ответ на: комментарий от com

Если имеется ввиду проперти «android.app.background_running», то оно уже есть в манифесте. Скорее всего именно благодаря ему C++ код и выполняется в бэкграунде. Но вот активити в любом случае останавливается... В общем, гимморой.

kuzulis ★★
()
Ответ на: комментарий от KivApple

Если сервисы или серьезная работа с ви-фи и прочим - то сразу лучше java, а так Qt работает - выглядит несколько жутковато, толстое, но и хрен с ним :)

С QML как-то у меня все хреново получилось, пусть и красивее внешне, чем QWidget... Но я ни разу им до этого не пользовался этим QML до этого :)

Если известно на чем запускать, то можно и на QWidget вполне сносно сделать, ИМХО...

Зато моя супер-пупер мега программа и на десктопе и на ведройде и на windows-ce практически без особых переделок - красота :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.