Як виглядає розробка для blackberry 10, Дмитро hecтepук

Незважаючи на те що мені пощастило в житті працювати з досить просунутими IDE, я все ж іноді дивлюся на інші середовища розробки щоб зрозуміти як же все там погано, що можна поліпшити, і головне зрозуміти який же взагалі розробницького experience у того хто пише для цієї системи . Ось недавно я вирішив дізнатися стан справ в стеці Blackberry. особливо якщо врахувати що недавно був випущений їх Q10 (шкода що за нереальною ціною).

Мови і Технології

Ось у Android все зрозуміло: програми пишуться на Java. Для iOS теж все більш-менш зрозуміло: потрібно використовувати Objective-C, хоча Xamarin пропонує розробляти ці програми в Visual Studio на C # (я це роблю, тому що хочеться використовувати R #, і налагодження зі Студії реально працює, але це дорога опція ). На нішевих платформах все дуже неоднорідний - під Windows Phone можна писати на C #, C ++ або WinJS (це пекельне місиво з HTML, CSS і JS) а на WinJS для WP8 ніби як не можна писати. На Blackberry, правда, все ще гірше. Варіанти приблизно такі:

Використовувати Java, але це тільки для «старих» версій, тобто не для сучасної BB10. Відпадає відразу.

Портування додатків Android. Хід хороший, звичайно, але впевнений що реалізовано не без косяків. До того ж, не котить для тих, у кого додатків немає взагалі.

Адаптація додатків Adobe AIR. Та ж ситуація що і з андроїдом, плюс я не знаю хто нині взагалі крім Adobe використовує AIR. Останній додаток яке я бачив на AIR був «важкий» TweetDeck, але потім він магічно матеріалізував себе як додаток Google Chrome і потреба в Standalone версії відпала взагалі.

С ++. Аааааа! Для написання «сучасних» BB10 додатків потрібно використовувати С ++!

Я нічого не маю проти плюсів, але бачивши той ад який творився з використанням плюсів для Symbian (привіт двоетапне створення об'єктів), ентузіазму у мене особливого не спостерігалося. Проте, вирішив скачати SDK.

створення проекту

Завжди цікаво, що ж пропонує IDE на момент створення проекту. Адже для мобільних пристроїв потрібно налаштувати як мінімум deployment targets, а це та ще завдання, нехай у BB10 ще й немає тієї фрагментації що у Андроїда. Отже, поїхали.

Cascades - це те як називається новий інтерфейс BB10. Наступний етап - вибір шаблону проекту, за умови що ми вирішили робити UI а не гру на OpenGL:

Далі все цікавіше - після генерації проекту (був ще один скрін для назви, я його не став приводити), з'являється мегаокно налаштувань. Перше, що ця штука робить - це знаходить ваші подівся або симулятори:

Далі йде питання щодо того, як ви плануєте підписувати додатки. Це, звичайно, питання, тому що я до моменту написання поста не було зареєстровано жодного на яких сайтах. Підказка тут в тому що цю справу можна прокинути, але я вирішив подивитися ... і ось найважливіше, що повинен бачити кожен:

А ось це дуже правильно хоча ... якщо врахувати як у них там справи ... хоча ні, справи у них не так погано:

Ну да ладно, я зарегился і BBRY (це їх новий тікер, раніше був RIMM) повідомив мене про те що чекати години отак 2.

Цікаво, навіщо 2 години то щоб видати ключі? Ймовірно там, на тому кінці, хтось пробиває моє ім'я в Гуглі щоб дізнатися, чи є я of good character. Між іншим, character checks все ще існують в реалі, наприклад для того щоб отримати британський паспорт або права, за вас повинен поручитися резидент. Але в даному випадку це якось особливо дивно. Дайте мені мої ключі.

QNX Momentix IDE

Blackberry поставляється зі своєю власною IDE для розробки під назвою Momentix IDE. Це тільки звучить красиво. Насправді - це Eclipse з усіма наслідками, що випливають. Якими? Ну по-перше, система не розуміє свій власний синтаксис:

Автодоповнення мало того що виглядає неапетитно, та ще й гальмує на додачу.

Редагування UI відбувається на мові QML який, не будучи XML-образним, взагалі незрозуміло як редагувати. Тобто виглядає це наприклад так:

Зізнаюся: я все ще злий на те що Microsoft змушує користувачів встановлювати Windows 8 тільки для того щоб скористатися роллю Hyper-V (яка, капость, ще вимагає оновлених проц, Core 4 Quad нібито не котить, потрібен core i7) під якою запускати емулятор. Слава рогам що з Blackberry все простіше - вам просто дається VM під VMWare, і все.

Перше що помічаєш - це варіанти запуску OS для різних пристроїв. Те що все це в одній виртуалке - це зручно, не люблю коли плодять суті. Що не дуже радує так це наявність Safe Mode, що ніби натякає що «щось може піти не так». (І справді, на практиці у мене система після перезапуску просто показала чорне вікно без будь-яких натяків на активність.)

Повинен зізнатися - QNX Neutrino, підпиляних під Blackberry, виглядає непогано:

Звичайно, UI цей не для фенбоев Apple а скоріше для людей які просто хочуть to get shit done, тому особисто мені Q10 і подобається (ціна не подобається зовсім, правда).

Ну да ладно, вся суть в тому, що маючи додаток в Momentix IDE, можна нехитрою маніпуляцією запустити його в емуляторі. На жаль, при першому запуску я отримав лише:

Спочатку, до того як я додав ключі (яких чекав 2 години), не працював взагалі нічого, я втратив багато часу щоб все полетіло. Але потім все запустилось і я був дуже радий побачити своє (нехай і сумне) додаток:

До слова скажу, що і в симуляторі і в QNX IDE я зловив масу багів, один раз перевстановив симулятор повністю (не раджу його перезапускати) а також витратив зайву годину-два на речі які просто відмовилися інтуїтивно працювати.

У мене зазвичай перше бажання в «плюсовом» проект - підключити STL і Boost. Але перед цим хочеться показати як взагалі все відбувається. Наприклад, ось як можна створити новий клас:

додав #include . скомпілював, начебто з'їло. Це означає що STL, як мінімум, працює. Додаю метод і тут виявляється що IDE додає в автодоповнення все що взагалі тільки можна:

Це ж як сильно потрібно ненавидіти розробників щоб в список доповнення залити взагалі все, що тільки можна знайти на верхньому рівні. Найцікавіше що що моєї функції з заголовки в списку взагалі немає. що марення і божевілля. Так, що там, для member fields автодоповнення теж немає, є хіба що для this-> але далі, ніж він справа не йде.

Вирішив зробити кнопку. Раптово на початку введення атрибута з'явився комплішн, вже щось

Для обробки події кнопки можна писати код прямо в QML. що виглядає неідіоматічно. Навіть XAML не опускається до такого рівня:

Природно, що поставити брейкпоінт в це місце не можна, тому що це працює тільки в кодових файлах. До речі, для брейкпоинтов у мене не вийшло навіть потикати в лівий margin щоб їх ставити, довелося лізти в меню. Тільки я запустив все це справа під дебагом, як ...

Ну невже так складно допомогти користувачеві синхронізувати всю цю справу? Чому я повинен турбуватися про те, що останні завантажені пакети не стикуються? Ще примітно що, на відміну від Visual Studio (та й більшості осудних IDE), Momentix IDE не відновлює window layout з дебажного в звичайний після того як ви закрили налагодження. Як холодної рибою по обличчю, чесслово.

Ще цікаво те, що дебагер у мене не спрацював де просили але зате спрацював де не просили. а саме чомусь встромився в main () хоча мого брейкпоінта там не стояв.

Так, і що стосується Boost, то знайшов на просторах інтернету проект. який якраз портіруют Boost для Blackberry, так що якщо що, можна скористатися.

висновок

Ясна річ що для того щоб зрозуміти як все дійсно добре потрібно покористуватися системою місяць-другий. Моє суб'єктивно відчуття що все могло б бути набагато гірше, і що треба дякувати Рогу за те, що у Blackberry вийшло хоч щось. По крайней мере, Cascades - непогана система, і я думаю що Q10 - непоганий девайс.

Інша справа що API зроблений на С ++ / QML повністю неінтуітівен. Наприклад, ось як виглядає код створення UI з QML. Спробуйте здогадатися що тут що.

Так що проти BBRY тут два фактори: незручний мову (все-таки Java або C # зручніше будуть), а також незручна IDE. Чи багато розробників захочуть писати під цю платформу? Поки що відносно порожній магазин Blackberry World - погано для екосистеми, але що якщо її закидають недопроектамі в стилі тих «змагань» які влаштовує Microsoft? Саме цього точно не хотілося б. Краще мало, але якісно, ​​ніж 99% сміття.

> Використовувати Eclipse для C ++ і потім скаржитися на C ++ - мсьє знає толк в збоченнях.

Eclipse CDT на якому заснована IDE для BlackBerry 10 досить зручний і поширений інструмент - на ньому купа коштів розробки заснована - від всяких embedded'ков до Nvidia Nsight

Інша справа що підтримка конкретно Qt / QML тут гірше ніж в QtCreator, напевно - але вибір пов'язаний з QNX, на якій заснований BB10 і QNX Momentics IDE на якій зроблена IDE для BB10

Я отримав від Блекберрі девайс і обіцяв їм розробити софт за це. Але не розробив, тому що все убого. Що мене чекає, Дмитро?

Тебе проклянуть і відлучать від мобільного раю! І чекає тебе асемблер з перфокартами !!

У Блекберрі якось дивно з девайсами - замість того щоб висилати продакшн копії як Нокія, вони висилають якісь моделі А, В і так далі, які хоч як мене релізний варіанти. Цікаво навіщо ...

Схожі статті