Реалии использования QT С++ для написания приложения для кросс-платформенных телефонов
Я пытаюсь продолжить разработку приложений для смартфонов (у меня мало опыта работы с Android). Я провел глубокие исследования, и я решил начать создавать приложения в Qt С++.
Причина, по которой я это делаю, заключается в том, что из моих исследований кажется, что я могу написать приложение один раз в Qt, тогда все, что мне нужно сделать, это скомпилировать его на IPhone, Android, Symbian и Windows Mobile, а затем у меня будет приложение которые будут работать на ВСЕ этих платформах.
Мой вопрос: исправляю ли я, что если я напишу приложение в Qt С++, то он будет работать на следующих платформах: Android, IPhone, Symbian и Windows Mobile?
Я знаю, что это наивный вопрос ( "Какой API я могу использовать для работы на всех платформах" ), но я много исследовал, и все они, похоже, говорят, что Qt может работать на всех этих платформах.
PS, Есть ли какие-либо недостатки в использовании Qt для написания приложения для кросс-платформенных телефонов? Скомпилирован ли код приложения Qt на каждой платформе?
Ответы
Ответ 1
Этот вопрос задавали давно, и с тех пор многое изменилось. Для тех, кто задает себе тот же вопрос сегодня (начало 2014 года), мой личный ответ заключается в том, что Qt работает на 99% на iPhone.
В настоящее время я разрабатываю приложение, которое использует QSensors, QNetworkAccessManager и OpenGL ES, и я не сталкивался с некоторыми проблемами в OSX, iOS, Windows и Linux. Подумайте о переносе на Android в ближайшее время.
Единственная проблема, с которой я столкнулся, - это модуль QtPositioning (GPS), который еще не поддерживается для iOS, но обходной путь очень прост, и я бы не стал рассматривать эту проблему. Вероятно, это будет работать в этом году. Также из-за некоторых ограничений iOS, QtWebKit недоступен. Остальное работает как шарм! Отличная работа.
Я не тестировал себя на Android, но из того, что я читал, Qt также должен работать над этим.
Ответ 2
Вы можете пойти с Qt С++ (и совсем недавно с QML) для разработки мобильных телефонов.
Мой вопрос: исправляю ли я, что если я напишу приложение в QT С++, то он будет работать на следующих платформах: Android, IPhone, Symbian и Windows Mobile?
Да, он отлично работает на Android, Symbian, Windows Mobile, Meego, Maemo, Moblin.
Я разработчик Qt, и я использовал его для разработки для Symbian, Meego, Maemo и Android. Поскольку Symbian, Meego, Maemo официально поддерживаются, они отлично работают на 99,99% на этих платформах.
Но в Android он работает на 95%, но вам нужно очень мало тренировок. Насколько я знаю, QtMultimedia Kit не поддерживается на Android (некоторые пути доступны). Но вкладчик порта Android Bog сказал, что он пошлет его тоже как можно скорее. Существует большое сообщество Qt, а также Qt для Android. Вы также можете использовать API-интерфейсы Mobility, как вы используете в Symbian и Meego. Мобильные приложения Qt уже опубликованы на рынке Android без проблем.
В отношении Windows Mobile официально упоминается, что даже Qt Mobility может использоваться с этим телефоном и поддерживает чистый код Qt С++. Но я не думаю, что слишком много пользователей будут использовать Windows Mobile сейчас, так как Windows Phone 7 (не поддерживается Qt) - это последний разговор.
Что касается порта iPhone, да, есть сообщества экспериментальных портов. Полагаю, скоро будут доступны некоторые примеры. Я видел несколько видео Youtube, демонстрирующих работу Qt и Qt Mobility на iPhone.
Недавно RIM заявила, что их платформа BBQ (Blackberry Tablet OS) будет иметь официальный порт для Qt.
Что касается любого Linux Mobile (Moblin, Maemo и т.д.), то Qt С++ отлично работает на них.
Что касается рабочего стола, Qt С++/QML работает практически на всех платформах для настольных ПК.
Я не понимаю, что кто-то вроде CommonsWare с 145k reps, просто вышел и сказал буквально, что Qt не будет работать ни на одной из мобильных платформ. Но, по его словам, если вы собираетесь выбрать API на основе HTML, например PhoneGap, то я бы рекомендовал Qt 100 раз по этому поводу. Потому что Qt может работать лучше, чем HTML5 всеми способами. Он может обрабатывать некоторые проблемы comlpex, такие как 3D, openGL и т.д. Намного лучше и эффективнее, чем HTML5.
Прочитав все вышеперечисленные ответы, я разочарован, чтобы сказать, что вам лучше не верить этим ответам и присоединиться к этому месту Qt Labs, где вы будет видеть и наслаждаться реальной мощью Qt.
Недавно Qt вышел из открытого управления, где каждый модуль Qt будет развиваться и поддерживаться в соответствии с общественными интересами. Далее Trolltech, KDE и Nokia разрабатывают его по коммерческим причинам. Поэтому никогда не теряйте Qt из-за плохой рекомендации, попробуйте сами, а затем решите это самостоятельно.
Ответ 3
Поддержка iOS и Android экспериментально, к сожалению. Nokia поддерживает только новые версии Symbian. Таким образом, Qt является кросс-платформенным только на настольном компьютере, и здесь он отлично работает → Linux, Windows, ** BSD, MacOSX, OS/2, Amiga OS4....
Стыдно, что Nokia начала строить телефоны с Windows. Если они будут прикреплены к meemo и symbian, по крайней мере, Qt будет активно развиваться.
Ответ 4
Я не верю, что Qt будет работать с той целью, которую вы описываете. К сожалению, я не думаю, что и что-то еще. Android в основном просто поддерживает Java. NDK позволит вам писать части приложения на С++, но для Java также требуется Java.
Новая версия Windows Mobile поддерживает только .NET-приложения (и я уверен, что никакой другой телефон не поддерживает .NET-приложения вообще...)
Ответ 5
Это не совсем так. Если данная функция имеет специфическую для платформы, тогда необходимо включить такие конструкции внутри этих скобок в имени файла .pro.
например, для symbian:
symbian {
SOURCES += symbian_file_handler.cpp
LIBS += -llibcryto
}
Ответ 6
Основная часть системы Qt, как все остальные ответили, будет работать на всех платформах, хорошо, если не все на данный момент, скоро это будет. Плюс Qt растет не только в рамках этой платформы, но и для ее поддержки и пользователей.
Единственная трудность, которую вы найдете, - это когда вам нужно использовать внешнюю библиотеку для работы на всех платформах. Например, я работаю с ffmpeg, и мой файл .pro 'в настоящее время настроен только для Windows и Android, но он работает.
Компиляция кода Qt для каждой платформы - это отклонение. Настройка внешних библиотек очень сложная.