Ох, как-то вы очень пессимистичны.
1. На нецесситасе работает например ДубльГИС под Андроид (вернее не на самом нецесситасе, а на форке, но тем не менее)
2. Сейчас нецесситас рано использовать по одной причине — может измениться API и ABI. Когда выйдет бета (а это будет скоро) уже можно будет не бояться
3. Андроидом заинтересовано много людей. И из Нокии в том числе. Например, Томас (который вел на DevDays'11 секцию по Андроиду в Contributors Day) работает в Нокии и он занимается поддержкой OpenGL в нецесесситасе.
4. Те баги которые вы назвали на самом деле являются минорными. Гораздо более интересными багами являются проблемы мобилити, отсутствие (хотя работа ведется и вроде что-то сделано более менее) внятного стиля для андроида, отсутствие qt components (работа правда опять же ведется)
Ну вот, Вы же сами написали, что серьезных багов хватает, так что я не зря пессимистичен :) Просто у маленького приложения заметны маленькие баги, а если бы делал что-то большое, тогда бы наверное еще веселее было.
В любом случае, спасибо за подробный отзыв! Рад, что все-таки собрался с духом написать на Хабр, а то кругом только .Net и Java, никто всякими кроссплатформенными извращениями не занимается )
Я могу сказать что перенос приложения, изначально написанного под symbian^3 на qml, с использованим карт и камеры из мобилити занял у меня примерно 3 дня. Из них два я фиксил мобилити. Пофиксил, отправил дифф, но чем дело закончилось, уже не помню. Так что как таковых проблем на самом деле нет.
Есть мелочи. И есть блокеры, которые можно пофиксить и самому (либо написать данную часть приложения по другому/временно отключить этот функционал).
Просто нужно понимать что такое стадия альфа у проекта. Естественно для варианта «взял и все работает» это не подходит.
Для варианта «взял, допилил, подумал, переписал, работает» это подходит
Дубльгис основан не на нецесситасе! Он основан на самостоятельном форке нецесситаса, который произошел достатчно давно. Сейчас опираться на проблемы дубльгис при анализе работы нецесситас крайне некорректно
Ну вот, Вы же сами написали, что серьезных багов хватает, так что я не зря пессимистичен :) Просто у маленького приложения заметны маленькие баги, а если бы делал что-то большое, тогда бы наверное еще веселее было.
В любом случае, спасибо за подробный отзыв! Рад, что все-таки собрался с духом написать на Хабр, а то кругом только .Net и Java, никто всякими кроссплатформенными извращениями не занимается )
gitorious.org/+grym/qt/grym-android-lighthouse Этот порт, чем отличается спрашивайте у разработчиков, они его пилят конкретно под свое приложение, поэтому он менее универсален, и конечно не имеет таких клевых плюшек как нецеситасс.
А можно ли этим SDK пользоваться без устройства — чтобы попробовать? И есть ли там командная строка, а то я как-то с Creatorом не сдружился, предпочитая старый добрый qmake && make?
Ох и натерпелись мы с этим Necessitas когда-то в своем проекте :)
Начнем с того, что там не был собран QtDBus (dbus в андроиде, как известно, есть). Собрать — собрали, а загрузить не можем: Ministro то не знает о нашей библиотеке. Давай смотреть, что же Ministro делает, когда загружает библиотеки. Оказалось, что он грузит xml-файл с сервера Necessitas`а, в котором описаны Qt-библиотеки, путь до них на сервере, их версии, размер, и… порядок загрузки! Этим порядком загрузки определяется и порядок линковки библиотек. В общем, <trollface> делать было нечего, подняли мы свой Apache </trollface>. Создали такую же структуру каталогов, как на сервере. Пропатчили xml-файл, добавив туда QtDBus. Начинаем загружать с помощью Ministro библиотеки… падает на линковке, т.к., если не ошибаюсь, он линкует их как только загрузил библиотеку. Тогда-то мы и узнали что порядок загрузки определяет порядок линковки.
Этот упоротый Ministro еще и заново загружает каждый раз библиотеки после перезаливки приложения. Почему нельзя было, например, с apk класть эти библиотеки? Ведь Qt-программа, собранная Necessitas`ом — это та же библиотека.
А еще, если нужно консольное/демон Qt-приложение под андроид, то можно просто исправить Makefile, генерируемый Necessitas, чтобы собиралась не библиотека, а готовый бинарник.
Еще из интересно, что встретилось при работе с Necessitas: часто вылетает сообщение «QEventDispatcherUNIX: internal error, wakeUps.testAndSetRelease(1, 0) failed!». И еще довольно странно ведет себя QWaitCondition: похоже, не всегда отрабатывает wakeAll().
Министро не упоротый. Он наоборот все правильно делает.
Если нужны свои либы, то можно в креаторе пометить Use local libs. И все будет хорошо (кроме qml-плагинов).
Qt либы не кладутся в apk с прогой, потому что тогда на девайсе будет дофига разных версий кьюта. По одной для каждого приложения. Министро, собственно говоря, и нужен чтобы этого избежать
Ха. Во-первых, как вы определите порядок линковки через «Use local libs» ?) Если бы все это работало, проблем бы не было.
А во-вторых, если не ошибаюсь, Ministro как раз загружает библиотеки в папку с именем программы, что как бы уже означает, что для каждой программы — свои библиотеки.
Очень просто. Правлю .java файлы. И все работает :D
Ошибаетесь. Он кладет либы в папку приложения министро. То есть они одни. Еще раз повторю, министро сделан для того чтобы была одна копия Qt в системе и она была постоянно свежей
>нужно произвести настройки USB и перезапусть adb под рутом:
при правильной настройке нужно только udev перезапустить и девайс перевоткнуть — рут для adb не нужен
Ну еще проблемы есть с дебагом. У меня так и не получилось нормально дебажить.
А насчет «Черный экран» в qml при возвращении. Эмпирическим путем было устанвленно, что если выставить у виджета по бокам отступы в 1 пиксел, то всё работает нормально =D. Этой рамки толком заметно не будет, но работать всё будет!
Пробовал я эту штуку. Ну работает, после определенных шаманских действий. Да, наверное есть смысл, если очень уж хочется портировать готовое Qt-приложение на Андройд. Но начинать с нуля проект — боже упаси.
Они наверное уже устали повторять, так что повторю за них: Официального порта Qt на WP не будет до тех пор пока Microsoft не предоставит спецификации API, а зная Microsoft это произойдет никогда
Все это хорошо, но вот подружить это все с cmake например весьма непросто. Как представлю количество костылей и подпорок, что все это взлетело, аж жутко становится.
Qt для Android (Necessitas Framework) – действительно ли это работает?