Разработка под Blackberry 10. Первые впечатления

    В конце прошлого года я получил в личное пользование Blackberry 10 Alpha, прототип, тогда еще не выпущенного, Z10. Естественно, у меня возникло желание что-нибудь написать для новой платформы, тем более она выглядела весьма интересно.
    Сейчас приложение готово, и я могу поделиться опытом разработки в сравнении с Android/iOS.


    IDE


    Это привычный Eclipse с набором расширений от Blackberry. Плюс — ничего не надо учить заново, среда привычна, минус — IDE поставляется только комплектом, а не как набор расширений, держать на одной машине несколько эклипсов для каждого вендора немного неудобно. Однако все это относится только к разработке нативных приложений на новом фреймворке Cascades, разработчики Android/AIR могут не отказываться от привычных инструментов.

    Cascades SDK


    По сути это Qt4 + QML, и если с Qt4 все просто, то в QML штатные элементы, заменены на компоненты Blackberry UI, остался только синтаксис. В этом есть плюс — все программы будут вести себя одинаково, но есть и минус — по функциональности и гибкости новые компоненты уступают штатным, особенно в плане удобства компоновки и «гибкой» верстки. Привыкнуть к верстке вообще было немного сложно, особенно к тому факту, что свойства margin и padding, хоть и присутствуют у всех элементов, но не всегда влияют на результат (это зависит от того, что лежит в контейнере — элемент управления, или другой контейнер).

    Native SDK


    Это чисто Сишный API и рядом с объектным Qt кодом смотрится чужеродно. Полностью без него обойтись нельзя (к примеру, если нужен Bluetooth), но в примерах есть готовые обертки, которые можно взять, чтобы не писать свои.

    Имеющиеся проблемы


    • QML редактор зависит от аппаратного ускорения и запускается не у всех и не всегда, для меня он, например, работал с SDK v10.0, но отключился в бете 10.1. Работать без предпросмотра можно, но времени тратится больше. Механизма предпросмотра для различных разрешений и ориентаций экрана, как в Android также нет, приходится проверять все на девайсе.
    • Симулятор работает крайне медленно, по скорости он не дотягивает не только до симулятора iOS, но и до полноценного эмулятора Android. Кроме того, так как симулятор имеет архитектуру отличную от ARM, приложение под него надо собирать отдельно, пред запуском переключая Build target.
    • Чтобы активировать режим разработки нужно обязательно поставить пароль на девайс, не менее шести символов, идущих не подряд, этот пароль приходится вводить каждый раз после длительного простоя устройства, а также при каждом подключении к компьютеру для отладки. Сам режим разработки выключается после перезагрузки, и его нужно включать заново.
    • Сертификат, который создается для приложений в режиме отладки, выдается всего на пару недель, потом приходится его пересоздавать, это не сложно, но снова отнимает время.
    • SDK и API активно развиваются и обновляются, в результате некоторые примеры (в том числе с официального сайта) работают некорректно, ввиду неактуальности.
    • Нет нормального способа загружать в Каскады свои шрифты.
    • Механизм поддержки множественных конфигураций уступает тому, что есть у Android. Даже несмотря на то, что существует всего три варианта разрешений (у dev alpha оно не такое, как у z10), этот недостаток уже чувствуется.
    • С++. Я очень люблю этот язык, но после C#/Java каждый поток ошибок компилятора, вызванный одной неправильной точкой, вводит в ступор.
    • На StackOverflow пока еще очень мало вопросов по новой платформе.


    Плюсы


    • Сайт для разработчиков. Он очень удобен, содержит массу информации по API, а на GitHub выложен богатый реп с кучей примеров на все случаи жизни. Причем примеры — это полноценные тестовые программы, из которых можно брать код и обрабатывать по месту. По каждой теме есть серия небольших статей, позволяющих быстро начать разработку, не изучая документацию вдоль и поперек.
    • Qt. Один из лучших кроссплатформенных фреймворков с отличной документацией, солидным сообществом и базой готовых решений.
    • Штатный механизм экспорта не разрешает подписать приложение с номером, который уже был однажды подписан. Больше не будет сборок, у которых по ошибке забыли поменять номер версии.
    • Блекберри 10 достаточна открытая (в плане API) платформа. Разработчику доступно многое, но при этом есть и механизм «разрешений», не позволяющий программам получать доступ к важным подсистемам или данным без разрешения пользователя.
    • Имеется штатный механизм взаимодействия программ, похожий на Intents в Android. По мощности он немного уступает последнему, но для самых распространенных задач его хватает с головой.
    • Простота портирования с Android. Я перевел два приложения без единой ошибки за полчаса. Это отличный результат. Конечно поддерживается только Android 2.3 и полученные порты выглядят не родными (но это можно и подправить, если заботиться о пользователях). Нужно только перед портированием отключить Notifications, так как аналогичного механизма в Blackberry 10 нет, и сообщения будут сыпаться в Hub, раздражая пользователя.
    • Поддержка J2ME, AIR, HTML5


    Маркет


    Магазин совсем не изменился и выглядит таким же, как и был во времена старых J2ME Blackberry устройств. На фоне отличного сайта для разработчиков он как пенсионер на баскетбольной площадке. Удобство пользователя тоже ниже среднего. В довершение всего мое первое приложение находится «на рассмотрении» уже больше двух недель (срок, который даже iOS программистов уже напрягает).

    Резюмируя, скажу что, несмотря на молодость платформы и ряд очевидных недостатков, она производит хорошее впечатление, как самим девайсом, так и основными инструментами разработчика. Кроме того список этих инструментов регулярно расширяется, а сами они обновляются. Так например, недавно вышел Exporter для PSD графики, в разработке находится плагин для Visual Studio
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 15

      0
      Может быть вы подскажете, код Cascades доступен где-нибудь? В свое время было интересно посмотреть, но я его не нашел.
        0
        К сожалению, не в курсе.
        +3
        Симулятор работает крайне медленно, по скорости он не дотягивает не только до симулятора iOS, но и до полноценного эмулятора Android. Кроме того, так как симулятор имеет архитектуру отличную от ARM, приложение под него надо собирать отдельно, пред запуском переключая Build target.
        А у меня симулятор BlackBerry субъективно работает быстрее, чем Android с включенным Intel HAXM. И не понимаю, почему необходимость пересборки на x86 отнесена к минусам — это требуется и для симулятора iOS, и для Android, если на последнем используется NDK и хочется отзывчивости от эмулятора.
          0
          В iOS переключаться чуть удобнее (в BB SDK надо подождать пока пройдет сборка перед запуском), а в Android без NDK вообще переключать ничего не нужно.
          +1
          Добавлю, что весьма активная работа ведётся над плагином для QtCreator. Уже можно делать и заливать на телефон приложения на Cascades. Но пока останавливает то, что в редакторе некорректно распознаётся их диалект QML.

          И ещё очень не хватает исходников, но тут уж ничего не поделаешь.

          В остальном просто сказка.
            0
            Ещё добавлю: в Blackberry своя обёртка над вебкитом вместо QtWebKit, и апи у неё не такой хороший. Нету всяких ништяков типа QWebElement и т.п. Поэтому может показаться что парсить html довольно напряжно.

            Но по факту это можно делать прямо в QML через javascript, и в итоге получается даже проще :)
            0
            Блекберри 10 достаточна открытая (в плане API) платформа. Разработчику доступно многое, но при этом есть и механизм «разрешений», не позволяющий программам получать доступ к важным подсистемам или данным без разрешения пользователя.


            К сожалению, не все что описано в документации работает. К примеру контроль wi-fi соединения (включение/выключение) не работает (по крайней мере на предыдущей версии Gold SDK, может в новой пофиксили).
              0
              Еще что очень не нравится, так что при использовании кастомных классов в QML не работает превьювер.
              +1
              Без картинок эта статья не привлекает ИХМО
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  Как можно не читать книгу? Это книгохульство) Но картинки могут дать четкое представление, дабы он не было ложным.
                  0
                  В следующей статье будет больше!
                  0
                  2 недели ждете? Одно из моих приложений проходило проверку 6 недель.
                  Правда это было перед самым запуском BlackBerry 10 и совпало с несколькими хакатонами.
                    0
                    Когда я впервые решил попробовать писать под BB у меня возникла проблема при регистрации, я не мог скачать средства разработки (да и зарегистрироваться вообще) с российского IP, а вот через прокси все прокатило нормально. Скажите пожалуйста сейчас подобные ограничения еще остались?
                      0
                      Сейчас все работает. По крайней мере с тех IP, что есть в моем распоряжении.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое