Comments 32
Ох, как-то вы очень пессимистичны.
1. На нецесситасе работает например ДубльГИС под Андроид (вернее не на самом нецесситасе, а на форке, но тем не менее)
2. Сейчас нецесситас рано использовать по одной причине — может измениться API и ABI. Когда выйдет бета (а это будет скоро) уже можно будет не бояться
3. Андроидом заинтересовано много людей. И из Нокии в том числе. Например, Томас (который вел на DevDays'11 секцию по Андроиду в Contributors Day) работает в Нокии и он занимается поддержкой OpenGL в нецесесситасе.
4. Те баги которые вы назвали на самом деле являются минорными. Гораздо более интересными багами являются проблемы мобилити, отсутствие (хотя работа ведется и вроде что-то сделано более менее) внятного стиля для андроида, отсутствие qt components (работа правда опять же ведется)
Как то так.
1. На нецесситасе работает например ДубльГИС под Андроид (вернее не на самом нецесситасе, а на форке, но тем не менее)
2. Сейчас нецесситас рано использовать по одной причине — может измениться API и ABI. Когда выйдет бета (а это будет скоро) уже можно будет не бояться
3. Андроидом заинтересовано много людей. И из Нокии в том числе. Например, Томас (который вел на DevDays'11 секцию по Андроиду в Contributors Day) работает в Нокии и он занимается поддержкой OpenGL в нецесесситасе.
4. Те баги которые вы назвали на самом деле являются минорными. Гораздо более интересными багами являются проблемы мобилити, отсутствие (хотя работа ведется и вроде что-то сделано более менее) внятного стиля для андроида, отсутствие qt components (работа правда опять же ведется)
Как то так.
А где-нибудь можно посмотреть на qt-components для Android?
Что за форк? Чем отличается?
Ну вот, Вы же сами написали, что серьезных багов хватает, так что я не зря пессимистичен :) Просто у маленького приложения заметны маленькие баги, а если бы делал что-то большое, тогда бы наверное еще веселее было.
В любом случае, спасибо за подробный отзыв! Рад, что все-таки собрался с духом написать на Хабр, а то кругом только .Net и Java, никто всякими кроссплатформенными извращениями не занимается )
Ну вот, Вы же сами написали, что серьезных багов хватает, так что я не зря пессимистичен :) Просто у маленького приложения заметны маленькие баги, а если бы делал что-то большое, тогда бы наверное еще веселее было.
В любом случае, спасибо за подробный отзыв! Рад, что все-таки собрался с духом написать на Хабр, а то кругом только .Net и Java, никто всякими кроссплатформенными извращениями не занимается )
Я могу сказать что перенос приложения, изначально написанного под symbian^3 на qml, с использованим карт и камеры из мобилити занял у меня примерно 3 дня. Из них два я фиксил мобилити. Пофиксил, отправил дифф, но чем дело закончилось, уже не помню. Так что как таковых проблем на самом деле нет.
Есть мелочи. И есть блокеры, которые можно пофиксить и самому (либо написать данную часть приложения по другому/временно отключить этот функционал).
Просто нужно понимать что такое стадия альфа у проекта. Естественно для варианта «взял и все работает» это не подходит.
Для варианта «взял, допилил, подумал, переписал, работает» это подходит
Есть мелочи. И есть блокеры, которые можно пофиксить и самому (либо написать данную часть приложения по другому/временно отключить этот функционал).
Просто нужно понимать что такое стадия альфа у проекта. Естественно для варианта «взял и все работает» это не подходит.
Для варианта «взял, допилил, подумал, переписал, работает» это подходит
а по поводу кросс платформенных извращений… это вы просто не там смотрите :D все есть
Ах вот почему ДубльГИС периодически намертво зависает у меня под Galaxy… теперь ясно.
То есть тьфу, Necessitas, конечно же.
Собственно те проблемы, которые, вы описали, как сказал коллега выше — ерунда.
А как дела обстоят с поддержкой звука, камеры, контактов и т. д.?
То есть, мне интересно насколько хорошо сейчас поддерживается Qt Mobility.
Что за форк? Чем отличается?
Ну вот, Вы же сами написали, что серьезных багов хватает, так что я не зря пессимистичен :) Просто у маленького приложения заметны маленькие баги, а если бы делал что-то большое, тогда бы наверное еще веселее было.
В любом случае, спасибо за подробный отзыв! Рад, что все-таки собрался с духом написать на Хабр, а то кругом только .Net и Java, никто всякими кроссплатформенными извращениями не занимается )
Ну вот, Вы же сами написали, что серьезных багов хватает, так что я не зря пессимистичен :) Просто у маленького приложения заметны маленькие баги, а если бы делал что-то большое, тогда бы наверное еще веселее было.
В любом случае, спасибо за подробный отзыв! Рад, что все-таки собрался с духом написать на Хабр, а то кругом только .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().
Начнем с того, что там не был собран 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. И все будет хорошо (кроме qml-плагинов).
Qt либы не кладутся в apk с прогой, потому что тогда на девайсе будет дофига разных версий кьюта. По одной для каждого приложения. Министро, собственно говоря, и нужен чтобы этого избежать
Ха. Во-первых, как вы определите порядок линковки через «Use local libs» ?) Если бы все это работало, проблем бы не было.
А во-вторых, если не ошибаюсь, Ministro как раз загружает библиотеки в папку с именем программы, что как бы уже означает, что для каждой программы — свои библиотеки.
А во-вторых, если не ошибаюсь, Ministro как раз загружает библиотеки в папку с именем программы, что как бы уже означает, что для каждой программы — свои библиотеки.
>нужно произвести настройки USB и перезапусть adb под рутом:
при правильной настройке нужно только udev перезапустить и девайс перевоткнуть — рут для adb не нужен
при правильной настройке нужно только udev перезапустить и девайс перевоткнуть — рут для adb не нужен
Ну еще проблемы есть с дебагом. У меня так и не получилось нормально дебажить.
А насчет «Черный экран» в qml при возвращении. Эмпирическим путем было устанвленно, что если выставить у виджета по бокам отступы в 1 пиксел, то всё работает нормально =D. Этой рамки толком заметно не будет, но работать всё будет!
А насчет «Черный экран» в qml при возвращении. Эмпирическим путем было устанвленно, что если выставить у виджета по бокам отступы в 1 пиксел, то всё работает нормально =D. Этой рамки толком заметно не будет, но работать всё будет!
Пробовал я эту штуку. Ну работает, после определенных шаманских действий. Да, наверное есть смысл, если очень уж хочется портировать готовое Qt-приложение на Андройд. Но начинать с нуля проект — боже упаси.
Спасибо, ценный обзор.
С учётом направленности Нокиа, вероятно скорее стоит ожидать развития Qt в сторону Windows Phone, чем в сторону Android.
С учётом направленности Нокиа, вероятно скорее стоит ожидать развития Qt в сторону Windows Phone, чем в сторону Android.
Все это хорошо, но вот подружить это все с cmake например весьма непросто. Как представлю количество костылей и подпорок, что все это взлетело, аж жутко становится.
Интересно, кто-нибудь подобным мазохизмом занимался?
Интересно, кто-нибудь подобным мазохизмом занимался?
Sign up to leave a comment.
Qt для Android (Necessitas Framework) – действительно ли это работает?