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

    Данные размышления долгое время лежали в черновиках и являлись следствием «накипело» за время разработки приложения под 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 удачи на рынке мобильных телефонов, а сам продолжу бороться с текущими методами разработки.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 23

      –5
      В свое время на winAPI было не проще, но это никого не останавливало.

      Симбиан (по меркам индустрии) — старше динозавров, поэтому неудивительно, что с разработкой столько проблем.

      Отказаться от поддержки симбиан в пользу принципиально другой ОС — вот верное решение.

      И пусть Вы все-таки закончили оптимистичным «Но работа явно ведется, и, все силы брошены на Qt, потому веб-разработчику придется пока что несладко в ожидании аналогичных решений на базе этой технологии.» — я Вам не верю.
        +3
        Сейчас Qt для Nokia — последний шанс остаться на плаву, без разработчиков их дни будут сочтены.
        Nokia это понимает и, хочется верить, в конце концов сделает замечательный инструмент.
        А пока не все потеряно, не будем отказаться от поддержки симбиан.
        Запасемся терпением — мигрировать не будем, но другие платформы посмотреть можно :)
          +1
          Nokia слишком долго затягивает с выпусками этих самых «замечательных».
          • UFO just landed and posted this here
          +5
          >и почему заморозили Qt WRT непонятно и даже обидно.

          Потому, что он не нужен и крив by design. Вместо него юзайте QtQuick. Оно в разы удобнее, чем ковыряние в HTML
            –1
            Вообще-то сложностей с SDK там хватает, но с приходом Qt жизнь намного легче стала. Сейчас активно работаю над портом qutIM'а. Для этого пришлось серьезно попотеть над написанием symbian генератора в cmake'е. Но зато теперь почти никаких проблем и всё почти автоматом делается.
              0
              С оплатой регистрации мне повезло больше: справился примерно за 20 минут с дешевой Visa Electron карточкой. А вот про подпись приложений под Symbian, подпишусь под каждым словом, причем тут для Qt-разработчика есть и дополнительный минус в лице SmartInstaller'а, который обязателен для Qt-приложений в OVI-Store.
                0
                В моем случае после добавления SmartInstaller почему-то не устанавливался дополнительный sis-файл, который я туда же вложил вместе с инсталлером. При установке видно, что он хочет его установить, но на практике ничего не появляется. Если же удаляю SmartInstaller — второй файл нормально устанавливается.
                0
                Спасибо за пост. Недавно смотрел на Ovi App Wizard… С Вашими комментариями согласен.
                  +2
                  Cудя по описанию вашего приложения, у него очень хромает архитектура. Если я правильно понял, то вы пытались с Javascript'a получить доступ с камере и микрофону. С _Javascript'a_ доступ к _системным устройствам_ — это в корне не правильно.
                    0
                    В принципе, Вы правы, поскольку APIBridge (как например, и Flash на Android) запускают для этого нативное приложение и уже с него считывают сохраненный файл. Но в Qt Mobility такого не наблюдается :(
                    +2
                    А реально выложить в Ovi Store приложение на Python for s60?
                      0
                      Нет. Т.к. нет runtime на устройстве и Smart Installer его докачку не поддерживает.
                        0
                        А ведь обещали…
                          0
                          Нет серьезного софта на PyS60, о котором можно было бы сказать «Must have в Ovi» и продавить с его помощью поддержку PyS60 в Smart Installer'e. Да и developer community не слишком то требует этого. Qt потихоньку вытесняет его.
                      0
                      Nokia не дают покоя лавры «величайшего просиральщка всего», ныне принадлежащие Palm :(
                        +1
                        от нокии постоянно чувствуется некая аура вроде «Дорогие разработчики, вы нам очень нужны, но на всякий случай ебитесь конем».
                          +1
                          > Для человека, не работавшего с языками типа С++ поведение этой библиотеки абсолютно неочевидно.
                          Улыбнуло. Библиотека ведь в этом не виновата. :)
                            0
                            смс-ки слать подписанное по без подтверждений может?
                              0
                              Подписанный нативный код — может.
                              WRT виджеты не подписываются. Но и они могут посылать смс'к, правда с подтверждениями. Тупа через URL схему «sms:», навроде mailto:
                                0
                                подписали, но не высылает смс-ки :(
                                  0
                                  Значит — код кривой
                              0
                              До вашей публикации была надежда на Нокию как оплот телефоно-строения,
                              и вот все разбилось о суровую правду жизни…

                              Only users with full accounts can post comments. Log in, please.