
Просьба не беспокоиться ненавистников данной марки, поскольку это скорее обзор текущих инструментов и особенностей для веб-разработчиков. Описание отрицательных сторон в данном случае стоит рассматривать, как попытку обратиться напрямую по текущим проблемам. Итак, с чем я столкнулся во время разработки приложения для Nokia.
Ovi store

Некоторое время назад на Хабре проводилась рекламная кампания Нокии, где пиарился Ovi App Wizard (http://appwizard.ovi.com/). Данный инструмент дает возможность быстро создать простое новостное приложение при наличии RSS-потока на сайте. Вспомним основное назначение RSS, а именно – он создан для описания лент новостей. Все это уже привело к ситуации, когда в Ovi Store находится куча бесполезных приложений. Например, газета «Ведомости» сама по себе довольно информативная, но ее виджет представляет собой просто сборник заголовков. Потенциально таких приложений может быть столько же, сколько RSS-лент в интернете.
Добавлю, что судя по всему, Нокиа решила не просто ввести такой инструмент, они еще и пиарят его активно среди крупных компаний — в один прекрасный момент Ovi Store начал пополняться сгенерированными App Wizard читалками от WWF, Greanpeace и т.д. Из-за этого становится гораздо сложнее пробиться в топы. И это при том, что знаменитые «fart»-приложения свободно существуют в мобильном магазине. Дело не ограничивается одними крупными компаниями. Такой рекламой привлекаются и вообще непонятные RSS-потоки. Как, например, этот (http://store.ovi.com/content/37316).
Nokia WRT widgets

Моя задача была получить доступ к камере и микрофону. Оказалось, что тут сразу возникает целый ряд проблем. Для начала по логике стоит обратиться к Nokia Platform Services, которые обеспечивает доступ ко всяким полезностям. Однако микрофон там полностью отсутствует, а наличие камеры есть только в версии 2.0. Отслеживать версии было не комильфо, а наличие микрофона критично.
Далее, оказывается, что в сообществе Nokia с такой проблемой уже сталкивались (а также с иными), в результате для таких случаев был создан APIBridge. Он представляет собой исполняемый файл, который создает локальный сервер на телефоне, ждет http-запросов и по ним вызывает камеру, микрофон, пересылает файлы и т.д. Конечно, все это костыли, но главная проблема в том, что APIBridge – sis файл, а виджет – wgz-файл (в народе просто zip). Тут на сцену выходит следующий костыль – WGZ installer, скомпилировав который можно получить sis-файл, содержащий одновременно виджет и тот самый APIBridge. Но WGZ Installer надо сначала отредактировать, а sis-файл надо подписать.
Package and signing

Тут все понятно и прошло быстро. Однако для компилирования приложений имеет смысл качать SDK S60 и с ним возникла проблема. В идеале оно должно само прописать в Windows пути к папкам, где хранятся исполняемые файлы, но на практике мне почему-то все время не везло, и когда я, наконец, тупо скомпилировал sis файл и подписал его, прошло уже два месяцев. Процесс для несведущего в программировании для десктопов совсем неочевидный, а одного большого мануала по веб-разработке с APIBridge и вовсе нету. Как оказалось, в Qt с подписанием все гораздо проще.
Nokia Qt SDK

По доступу к устройствам стоит отдельно отметить, что под эти цели существует отдельный API Qt Mobility. Для человека, не работавшего с языками типа С++ поведение этой библиотеки абсолютно неочевидно. Примеры с камерой запустились далеко не с первого раза и было угроблено очень много времени, чтобы только понять, что это не то, что мне нужно. Например, возможность вывода камеры в само приложение мне все равно не подходило, поскольку моя цель была использовать браузер, куда камеру просто не вывести.
С помощью инструкции можно скомпилировать QtWebKit плюс виджет, но, опять же, для приложений «чуть больше чем просто что-то показывать» слишком много, а функций маловато. Кроме того, много багов. Например, при доступе к локальным ресурсам, Qt спрашивает запрос на соединение с интернетом (который очевидно здесь не нужен), а при выборе какой-то точки доступа, естественно выдает сообщение, что такого ресурса нету (видимо на уровне роутера).
Хотя отдаю должное, что в Qt все очень быстро развивается (в том числе тот же Qt Mobility), Qt Creator довольно удобный инструмент, умеющий работать, не пожирая кучи ресурсов. Кроме того в нем удобно, имея мобильный телефон, компилировать и заливать все разом для тестирования непосредственно на девайс (с чем постоянный гемор при работе с Nokia WRT). Но веб-разработчику пока что сливки снимать там рано, и почему заморозили Qt WRT непонятно и даже обидно.
Текущая стадия проекта
Очень хотелось, чтобы приложение заработало под Qt, но при попытке туда дополнительно скомпилировать APIBridge и обязательный Express installer (который скачивает библиотеки Qt при необходимости) привели к странному глюку – APIBridge не устанавливался. В любом случае, доступа к локальному серверу я все равно так и не получил (о чем составлен баг-репорт). В итоге, после пары месяцев мучений я-таки скомпилировал проект обычными средствами SDK единый файл, содержащий APIBridge и сам виджет, и подписал его. Сейчас мы занимаемся дизайном и, возможно, скоро я расскажу о чем был весь сыр-бор.
Текущая стадия Nokia
Сейчас явно видно, что после появления iPhone/Android требования разработчиков и пользователей, Symbian пришлось создавать новые инструменты поверх старых. В результате чего, появилось множество костылей, которые должны отпасть в дальнейшем, потому что работать с ними невозможно. Но работа явно ведется, и, все силы брошены на Qt, потому веб-разработчику придется пока что несладко в ожидании аналогичных решений на базе этой технологии. Но уже сейчас сделаны правильные шаги, вроде цены регистрации в Ovi Store и бесплатности получения сертификатов.
Со своей стороны желаю Nokia удачи на рынке мобильных телефонов, а сам продолжу бороться с текущими методами разработки.