Pull to refresh

Подводные камни веб-разработчика

Reading time 5 min
Views 1.3K
Данные размышления долгое время лежали в черновиках и являлись следствием «накипело» за время разработки приложения под Nokia. Первый вариант статьи был написан в виде критики, но поскольку на Хабре нападок на компанию и так много, я переделал статью в ином ключе.

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


Ovi store


Думал я зарегистрироваться в Ovi Store уже довольно давно, с того самого момента, когда регистрация была открыта индивидуальным разработчикам. Цена была довольно лояльной – 50 евро разово. Долго думал, и оказалось правильно, т.к. через некоторое цену снизили до 1 евро (я бы рассказывал в больших красках, если бы заплатил тогда 50). Но тут тоже оказалось не все так просто. Оплата упорно не проходила, а я пробовал оплатить аж 3 разными карточками — ничего вышло. Позвонил в Англию в процессинговый центр, там сказали звонить в будний день. Написал в суппорт Нокии – зарегистрировали прямо по почте и бесплатно.

Некоторое время назад на Хабре проводилась рекламная кампания Нокии, где пиарился 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


Поскольку меня интересует разработка веб-приложений под Нокию, выбор сразу пал на создание виджетов, с помощью которых можно создавать html/js приложения. К сожалению, в Nokia используется довольно старая версия WebKit – 525. И работает он мягко говоря, не быстро. Потому рассчитывать на плюшки, типа HTML5 бесполезно. Хорошо, если jQuery заработает, а о jQuery Mobile можно пока что и не мечтать (он, собственно, в WRT и не работает). Кроме того, js-код на телефон устанавливается в открытую, что, в принципе, не самая страшная проблема, можно воспользоваться обфускаторами. Более страшная проблема, если логика приложения не ограничивается простым http, тогда придется попотеть.

Моя задача была получить доступ к камере и микрофону. Оказалось, что тут сразу возникает целый ряд проблем. Для начала по логике стоит обратиться к Nokia Platform Services, которые обеспечивает доступ ко всяким полезностям. Однако микрофон там полностью отсутствует, а наличие камеры есть только в версии 2.0. Отслеживать версии было не комильфо, а наличие микрофона критично.

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

Package and signing


Для того чтобы использовать некоторые важные функции в телефоне для sis-файла потребуется не просто китайский сертификат, а настоящий нокиевский. Получение сертификата для тестирования в последнее время стало более простым, и оно бесплатно. Для этого нужно отправить по электронной почте заявку в Ovi Store, они пришлют договор, который надо подписать, отсканировать и отослать вместе с IMEI-телефонов для тестирования. После окончания тестирования приложение заливается в магазин, там его подписывают уже настоящим сертификатом для всех телефонов.

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

Nokia Qt SDK


Начну сразу с того, что проект Qt WRT был не так давно заморожен, хотя очевидно, что для веб-разработчика с ним было бы удобнее работать — в нем есть современный WebKit, Qt имеет доступ к устройствам телефона, ну и вообще у Qt большие перспективы в телефонах Nokia.

По доступу к устройствам стоит отдельно отметить, что под эти цели существует отдельный 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 удачи на рынке мобильных телефонов, а сам продолжу бороться с текущими методами разработки.
Tags:
Hubs:
+30
Comments 23
Comments Comments 23

Articles