Разработка под Sailfish OS глазами iOS-разработчика. Что такое Sailfish OS и зачем она нужна

Изучив смартфон Jolla , мы решили подготовить отдельный материал по Sailfish OS - операционной системе, на которой работает этот аппарат. Поскольку по самому смартфону мы сделали обзор, здесь не будем касаться вопросов производительности, работы модулей связи и тому подобных вещей. Кроме того, подчеркнем, что эта статья - результат первого знакомства с операционной системой. Возможно, после длительной эксплуатации смартфона проявятся детали, которые не были описаны здесь. Впрочем, мы будем внимательно следить за развитием новой ОС, и как только появится новая информация - подготовим новый материал.

Sailfish OS - это попытка выходцев из Nokia , почившей вскоре после прихода в Nokia Стивена Элопа. Чтобы лучше разобраться в запутанной родословной Sailfish OS, советуем вам освежить в памяти статьи про Nokia N9 и Nokia N950 , а также , где впервые была представлена Sailfish OS.

Мы не будем заново пересказывать всю эту историю и лишь упомянем несколько ключевых фактов, необходимых для понимания базовых принципов функционирования ОС. Итак, в основе Sailfish OS - ядро Linux с надстройкой на Qt и Mer, а интерфейс и приложения сделаны на QML и HTML5. Исходный код полностью открыт, что позволяет энтузиастам модифицировать ОС, а также устанавливать ее на другие смартфоны. В частности, уже есть успешные попытки установки Sailfish OS на Nokia N9 и Google Nexus 5. Отметим также, что на MWC 2013 работу Sailfish OS гендиректор Jolla (ныне - руководитель группы разработки) Марк Диллон демонстрировал нам на Nokia N950.

Впрочем, никаких новостей о том, что Jolla планирует лицензировать свою ОС другим производителям, пока нет, так что на данный момент единственным официальным «носителем» Sailfish OS является смартфон Jolla. Давайте же познакомимся с ОС на практике.

Первоначальная настройка и базовые приложения

При первом включении смартфона нам предлагают пройти несколько шагов по настройке системы (выбор языка, страны, регистрация в магазине и пр.). Все сделано очень симпатично, интерфейс сразу подкупает своим стилем и разными интересными фишками. Приятно, что поддерживается русский язык - хотя смартфон не только не продается в России, но даже и не доставляется сюда, если сделать заказ на сайте Jolla. Причем поддержка распространяется как на клавиатуру (русский язык присутствует изначально, его не надо включать в настройках), так и на интерфейс.

Непосредственно перед запуском ОС нам предлагают пройти небольшой тренинг по управлению интерфейсом. Как и MeeGo, Sailfish OS полностью управляется жестами. Кроме того, перед запуском можно выбрать список приложений, которые будут установлены. В отличие от iOS и Android, нас не вынуждают пользоваться предустановленными картами, почтой и прочими сервисами - в «обязательном» пакете идут только Телефон, Сообщения, Браузер, Камера, Контакты, Магазин, Галерея, Настройки, Руководство и Yandex.Store.

На скриншоте слева над этим абзацем можно увидеть полный набор предустановленных приложений (два верхних ряда плюс первая иконка третьего ряда), а на скриншоте справа - полный набор приложений, которые нам предлагают установить при первом запуске. Хорошо видно, что здесь многого не хватает - например, менеджера файлов, клиентов социальных сетей, YouTube... Частично эти проблемы можно решить, но об этом мы поговорим позже.

Вкратце расскажем об основных приложениях.

Все приложения очень минималистичны. Настроек почти нет, интерфейс не всегда интуитивен. Но внешний вид - приятен. Выше - скриншоты приложения Телефон. Ниже - Сообщения. Обратим внимание на клавиатуру и переключение языков. Чтобы сменить раскладку, надо коснуться и удержать палец на кнопке пробела, после чего, по-прежнему не отрывая палец, нажать в открывшемся меню на нужный вам язык. С одной стороны, такой способ смены раскладки интересен, с другой - он более долгий, чем на iPhone и Android. Если нужно вставить в русскоязычное сообщение одно слово на английском, получается слишком долгая и неудобная процедура.

Браузер здесь свой собственный, и, честно говоря, нас он несколько разочаровал. Во-первых, слишком непривычный интерфейс: адресная строка находится только на втором экране, где размещены закладки. И, самое главное, отсутствует смена ориентации с портретной на ландшафтную. Это, например, делает фактически бессмысленным просмотр онлайн-видео. Увы, отсутствие возможности смены ориентации - это беда многих приложений Jolla.

Приложение Камера интересно расположением настроек, а заметки - возможностью присваивать записям цветные метки, сортируя их таким образом.

Часы, Калькулятор, Контакты, Календарь ничем особенным не выделяются, Медиа, Документы и Галерея предназначены для открытия различных файлов (соответственно аудио, текстов и фото/видео). Что касается приложения Карты, то здесь используются Nokia Here Maps. Местоположение по GPS они определяют корректно, сами карты достаточно подробные (в Москве показывают все, вплоть до отдельных домов), но, увы, в отличие от смартфонов Nokia, здесь нет возможности использовать карты локально, без интернета.

Последнее приложение Jolla, о котором мы расскажем - Почта. Главный его недостаток - невозможность открыть вложение прямо в почтовом клиенте: можно только скачать файл и открыть его в Документах. А в качестве плюсов отметим возможность выделять несколько писем и удалять их всех одним нажатием (почему-то у новых ОС не всегда бывает такая возможность), а также возможность работы с несколькими почтовыми ящиками.

Внешний вид и управление

Для гиковской операционной системы, да еще и в первой версии, Sailfish OS выглядит превосходно. Отлично подобранные тонкие шрифты, полупрозрачные миниатюры окошек, эффекты плавного появления и изчезновения сворачиваемых приложений...

В отличие от Firefox OS, напоминающей ранние версии Android, Sailfish OS получилась действительно красивой. Обратим внимание на иконки приложений: большинство из них разной формы. В этом проявляется философия Jolla, выражаемая английским словом Unlike (иной, отличный от других, непохожий).

Иконки новых приложений добавляются снизу, здесь нет горизонтально расположенных рабочих столов, как в Android - только вертикальная «простыня» с иконками. И связано это с особенностями управления.

Смахивающий жест справа налево и слева направо сворачивает запущенное приложение, не закрывая его. Смахивающий жест снизу открывает окно уведомлений. Сверху - полностью закрывает открытое приложение. А если поставить палец на экран и потянуть немного вниз, не отрывая палец, то мы увидим дополнительное меню, которое появится сверху, как будто над рабочим столом. Чтобы выбрать в нем один из пунктов, надо совместить этот пункт с полупрозрачной полоской. Очень интересное, хотя и непривычное для освоения решение!

Смахивание сверху, когда никакое приложение не запущено в активном режиме, приводит к выключению экрана и переходу в спящий режим. Двойной тап по выключенному экрану, наоборот, включает смартфон. Конечно, привыкнуть ко всем этим смахиваниям, оттягиваниям, постукиваниям и прочему не так-то просто. И не факт, что в повседневной жизни это будет действительно удобно (хотя какие-то решения явно удобны). Но, тем не менее, такие эксперименты необходимы для развития индустрии мобильных устройств. Возможно, некоторые войдут в обиход и в других ОС.

Есть в Sailfish OS немало и вполне привычных решений. Например, чтобы удалить приложение, надо нажать на иконку, удерживая палец до того момента, пока под иконкой не появится крестик. После этого достаточно нажать на крестик - и приложение будет удалено. Аналогичным образом можно «убить» ненужные миниатюры открытых приложений.

Отметим, что одна из особенностей интерфейса, которую нам демонстрировал Марк Диллон на Mobile World Congress 2013, все же пока не реализована - это управление приложением прямо в миниатюре. Например, управление воспроизведением музыки: не раскрывая приложение на весь экран, вы нажимаете Play или Pause. Увы, на финальном устройстве мы так и не смогли увидеть эту идею в действии: в ответ на любое прикосновение миниатюра приложения раскрывала его на весь экран. Но во внешнем облике миниатюр остались следы той концепции. Посмотрим, может быть, в будущем ее все-таки реализуют. Впрочем, и без этого работа с многозадачностью у Sailfish OS очень хорошая.

Магазины и поддержка Android-приложений

В Sailfish OS установлены сразу два магазина приложений: собственный магазин Jolla и Яндекс.Store. В магазине Jolla размещены приложения, написанные специально для Sailfish OS. На момент написания данной статьи этих приложений было 152 (включая приложения Jolla, предлагаемые при настройке системы). Конечно, с обилием приложений для более популярных и старых операционных систем это не сравнится, но учитывая, что продажи смартфона начались совсем недавно, старт весьма неплохой.

Для выделения более удачных приложений в Магазине используется система лайков и отображается информация о количестве загрузок. Кроме того, есть, разумеется, и разделение на категории.

Большинство из имеющихся на данный момент приложений - простенькие утилитки и казуальные игрушки (змейка, судоку и т. п.). Но есть и крайне полезные вещи, которые мы настоятельно рекомендуем установить вскоре после первого знакомства с ОС. Перечислим их.

File Browser - менеджер файлов. Даже странно, что ничего подобного нет в основном комплекте приложений. Screenshot - инструмент для снятия скриншотов (увы, аппаратная возможность снимать скриншоты, как в Android 4.x и iOS, в Sailfish OS пока не реализована).

Flashlight - элементарный фонарик. Friends - симпатичный клиент для Facebook.

Наконец, Webcat - неплохой (хотя и не безупречный) браузер, превосходящий предустановленный браузер по скорости работы (результат в SunSpider в полтора раза лучше!) и удобству интерфейса, а также радующий наличием ландшафтной ориентации (которой нет у предустановленного).

Есть, конечно, в Магазине и не очень удачные приложения. Например, клиент для Dropbox под названием Sailbox нас огорчил (пользоваться им неудобно, функциональность скромная). а Weather так и не смог запуститься нормально. Впрочем, все представленные приложения - бесплатные, так что даже если вы установите что-то посредственное, потом не жалко будет его удалить.

Теперь давайте посмотрим, как работает Яндекс.Store в Sailfish OS и зачем он здесь нужен. На самом деле, наличие Яндекс.Store очень ценно, поскольку из него можно устанавливать Android-приложения. В Sailfish OS заявлена совместимость с Android-приложениями, но Google Play Store здесь нет (компания Google не лицензирует его отдельно от Android). Поэтому приходится довольствоваться альтернативными маркетами, и Яндекс.Store из них как минимум не худший.

Среди приложений, которые можно поставить из Яндекс.Store и вполне нормально работать с ними на Jolla - клиенты Вконтакте и Одноклассников, Skype (правда, его можно использовать только как текстовый чат из-за проблем с передачей звука), Viber, Angry Birds, Метро.Яндекс и некоторые другие, без которых нам сейчас сложно представить нашу жизнь.

Обратите внимание, что в Android-приложениях доступны кнопки Назад и Меню, которые не используются в Sailfish OS, но черная полоска с ними «съедает» часть пространства экрана.

Ну и, разумеется, интерфейс Android-приложений выполнен не в стиле Sailfish OS. Отметим также, что плееры и менеджеры файлов из Android здесь практически бесполезны, поскольку список папок, которые «видны» из них, совершенно не совпадает с тем, что можно увидеть, подключив Jolla к компьютеру или запустив нативный File Browser. По всей видимости, Android-приложения запускаются в неком подобии виртуальной машины, которая изолирована от основного файлового окружения. То есть работа с файлами из-за этого затруднена. Например, нельзя скинуть фильм с компьютера и открыть его Android-плеером (по крайней мере, у нас это не получилось). Не получилось воспроизвести видео с помощью MX Player, установленного из Яндекс.Store, и с microSD-карты.

Работа с файлами, подключение к ПК, Терминал

Принципиальная особенность Sailfish OS - максимальная открытость, предоставление пользователю максимума свободы (как и полагается Linux-системе). Поэтому работа с файлами здесь не требует никаких дополнительных ухищрений: вы можете переписывать файлы с ПК на смартфон и открывать их с помощью приложений Sailfish OS, можете даже включить режим разработчика и получить в свое распоряжение полнофункциональный Терминал.


Что касается подключения к ПК, то без активированного режима разработчика смартфон при подключении к компьютеру предложит два варианта: передача файлов или только зарядка. В первом случае смартфон отобразится как съемный накопитель, и вы сможете переписывать файлы из внутренней памяти смартфона и в нее. Во втором случае, понятное дело, смартфон просто будет заряжаться от компьютера.

Если же у вас включен режим разработчика, то будет доступен еще и третий вариант, который так и называется - Режим разработчика.

Очень важно, что Android-приложения можно установить прямо из APK-файла: просто переписываем APK во внутреннюю память смартфона и устанавливаем. Есть, конечно, вероятность, что не заработает нормально, но такое бывает и на «настоящем» Android.

Собственно говоря, единственная проблема по части работы с файлами, которая здесь есть, связана как раз с Android, а именно с невозможностью добраться Android-приложениям до файлов корневой директории внутренней памяти Jolla. Но это вытекает из самой логики операционной системы.

Выводы

И вот мы плавно перешли к недостаткам. Конечно, система совсем юная, и судить ее «по гамбургскому счету», пожалуй, не совсем правильно. Но не сказать о недоработках и нестабильностях тоже нельзя. На первой версии прошивки ситуация была совсем печальной. Во-первых, после установки одного приложения магазин Jolla переставал работать и во всех последующих запусках вылетал. Во-вторых, после начала работы появлялось уведомление о наличии обновления ОС, однако попытка обновить ни к чему не приводила. Такое ощущение, что ОС просто не реагировала на команды начать обновление - так это уведомление о доступном обновлении и продолжало висеть. В-третьих, имели место постоянные зависания различных приложений. Например, Яндекс.Store успешно запускался только через раз. После того, как обновление ОС все-таки удалось установить (текущая версия - 1.0.2.5 Maadajâvri), проблем стало существенно меньше, но некоторые нестабильности и вылеты все же были замечены.

Кроме того, смешанные впечатления оставили предустановленные приложения: они, конечно, все красивые и интересные с точки зрения интерфейса, но как можно было выпустить браузер без возможности смены ориентации на ландшафтную? Почему приложение Медиа играет только музыку, а видео нужно смотреть с помощью Галереи? Почему видеофайл нельзя открыть просто из менеджера файлов - только из Галереи? Подобных мелких и крупных недочетов предостаточно, но...

И все же, несмотря на все эти проблемы и замеченные недоработки, мы считаем Sailfish OS очень перспективной операционной системой. У нее есть свой стиль, своя идеология (правильная, грамотная и искренняя), свои уникальные особенности… Есть, наконец, сообщество разработчиков и энтузиастов, которые еще со времен Maemo следят за судьбой мобильных open source-проектов и поддерживают каждый шаг в этом направлении. Поэтому теперь все будет зависеть от дальнейшей стратегии команды Jolla. Будут ли они лицензировать ОС или планируют использовать ее только на своих смартфонах? В последнем случае планируют ли выпускать дешевые смартфоны или ставка будет исключительно на верхний сегмент? Ответы на какие-то из этих вопросов мы, вероятно, получим уже в ближайшее время (например, после Mobile World Congress 2014). И в любом случае мы будем следить за судьбой Sailfish OS и надеяться, что проклятие Nokia (похоронившей сначала Maemo, а потом и MeeGo) обойдет стороной этот стартап, пусть и зародившийся в недрах корпорации Nokia, но порвавший с ней и отправившийся в вольное плавание на своей рыбацкой шлюпке.

P. S. 31 января, уже после того, как статья была завершена, Jolla выпустила обновление операционной системы 1.0.3.8 (Naamankajarvi), в котором исправлен ряд недостатков и добавлены некоторые возможности, которых ранее очень не хватало. В их числе: ландшафтный режим для браузера, зум двумя пальцами в приложении Камера, поддержка SMS в Android-окружении и другие улучшения.

Instructors

Join this course

Join this course

Expected time to complete: 6 hours

Language: Русский

Certificate: Not issuing

Share this course:

Https://сайт/2341

About the course

Курс позволит слушателям познакомиться с основами разработки для Sailfish OS., операционной системы для мобильных устройств и планшетов, основанной библиотеках и ядре Linux. Её ключевыми особенностями являются: высокая производительность, низкие требования к аппаратным ресурсам, бережное отношение к персональным данным пользователей. В основе проекта лежат платформа Mer и библиотеки Qt.

В течение курса вы узнаете о том, как разрабатывать приложения под мобильные устройства, работающие на Sailfish OS. Освещены вопросы установки SDK для начала разработки, рассмотрены инструменты разработчика. Курс познакомит слушателя с основами разработки с использованием библиотек Qt и возможностями конструирования интерфейсов на декларативном языке QML с использованием библиотек Qt Quick и Sailfish Silica.

Цель курса – дать понимание основ разработки под операционную систему Sailfish OS. После его изучения вы сможете разработать и опубликовать собственные приложения.

Материалы курса подготовлены при поддержке компании «Открытая Мобильная Плаформа».

This course is entirely free. All content is available now.

12 июля 2016 в 17:56

Начало разработки для Sailfish OS

  • Разработка мобильных приложений ,
  • Разработка под Sailfish OS
  • Tutorial

Для написания приложений для платформы Sailfish OS используется язык С++ и библиотеки Qt, а также язык QML для описания графического интерфейса приложений. Поэтому, если вы уже имеете опыт написания приложений с использованием Qt и QML, разработка для Sailfish OS не вызовет у вас затруднений. Кроме того, Sailfish OS позволяет разрабатывать нативные приложения на языке Python. Однако, данная тема выходит за рамки данной статьи и не будет в ней описана (подробнее про это можно почитать, например, ).

Как и для других мобильных платформ, разработка для Sailfish OS ведется с использованием SDK, предоставляемого создателями платформы. SailfishOS SDK включает в себя:

  • QtCreator - IDE, в которой собственно и предлагается вести весь процесс разработки.
  • Mer Build Engine, который необходим для сборки приложений.
  • Эмулятор Sailfish OS.
  • Примеры, руководства и документация к API.

Mer Build Engine и эмулятор платформы поставляются в виде образов виртуальных машин для VirtualBox. Однако, сам VirtualBox в состав SailfishOS SDK не входит. Поэтому, перед непосредственной установкой SDK, необходимо вначале установить VirtualBox версии не ниже чем 4.1.18. Кроме того, при работе в Windows, перед установкой SDK так же необходимо установить пакет Windows Microsoft Visual C++ 2010 redistributable (x86).

Сам SailfishOS SDK доступен для Linux, Windows и Max OS X, его можно . SDK поставляется в виде графического инсталлятора, поэтому установка SDK не вызывает никаких трудностей. Однако, при установке вас спросят альтернативный путь для проектов. Этот параметр необходим для того, чтобы виртуальная машина с Mer Build Engine имела доступ к исходным кодам вашего проекта. По умолчанию это ваша домашняя директория. В последствии данный параметр можно изменить в настройках Qt Creator.

После установки SDK вы полностью готовы к разработке приложений для платформы Sailfish OS.

Создание Hello World! приложения так же не вызывает каких либо трудностей. Просто запускаем Qt Creator, нажимаем на кнопку «Новый проект» на главном экране (или через меню Файл -> Создать файл или проект...) и настраиваем проект:

Автоматически сгенерированный проект немного сложнее, чем стандартный одностраничный Hello World. Это позволяет сразу же раскрыть некоторые особенности Sailfish OS. На главное странице отображается стандартное приветствие. Однако, если на этом экране выполнить жест swipe вниз (стандартное управление для данной платформы), вверху появится меню, позволяющее перейти на вторую страницу приложения, где расположен список элементов.

Ниже приведены скриншоты Hello World приложения:

Теперь давайте взглянем на код. Здесь все стандартно для QML приложений и поэтому знакомо любому, кто когда-либо писал приложения используя данный язык. Единственный .cpp файл описывает, какой .qml следует отобразить при запуске приложения. В нашем случае это HelloWorld.qml . Кроме того, в проекте содержатся 2 страницы, а также Cover Page, которая определяет вид приложения на домашнем экране Sailfish OS, который отображает миниатюры всех запущенных приложений и позволяет переключаться между ними, либо закрывать их.

HelloWorld.qml описывает главное окно приложения. В нем указывается начальная страница приложения и Cover Page, а также дополнительные параметры приложения (в нашем случае это разрешенные ориентации экрана и ориентация экрана, которая будет использована по умолчанию):
ApplicationWindow { initialPage: Component { FirstPage { } } cover: Qt.resolvedUrl("cover/CoverPage.qml") allowedOrientations: Orientation.All _defaultPageOrientations: Orientation.All }

FirstPage.qml описывает начальную страницу приложения. Здесь все стандартно для QML приложений, однако есть некоторая особенность Sailfish OS, на которую следует обратить внимание:
//... SilicaFlickable { anchors.fill: parent PullDownMenu { MenuItem { text: qsTr("Показать вторую страницу") onClicked: pageStack.push(Qt.resolvedUrl("SecondPage.qml")) } } //...
Здесь используется элемент SilicaFlickable , который, во первых, позволяет сделать контент внутри самого элемента прокручиваемым, в случае если он полностью не влезает внутрь элемента. А во вторых, позволяет использовать PullDownMenu - то самое меню приложения, открываемое свайпом вниз.

Кроме того, хотелось бы так же обратить внимание на CoverPage.qml , который описывает Cover Page приложения. Он содержит следующий элемент:
CoverActionList { id: coverAction CoverAction { iconSource: "image://theme/icon-cover-next" } CoverAction { iconSource: "image://theme/icon-cover-pause" } }

Данный элемент позволяет помимо вывода информации также предоставить пользователю возможность управления приложением непосредственно с его миниатюры на домашнем экране.

Для запуска приложения в эмуляторе необходимо в боковом меню выбрать комплект i486, нужный тип сборки (релиз или отладка) и способ установки Deploy as RPM Package :

После этого просто нажать на зеленую стрелочку в боковом меню. Это действие соберет приложение, запустит эмулятор, установит и запустит ваше приложение на эмуляторе.

Кроме того, можно просто запустить эмулятор нажав на кнопку в боковом меню. Это позволит вам просто исследовать Sailfish OS не имея устройства на данной платформе.

На этом все, в будущем я постараюсь более подробно описать некоторые особенности разработки под платформу Sailfish OS.

UPD: Большое спасибо @kirikch за замечания и комментарии, они были учтены в обновленном тексте статьи.

  • Разработка мобильных приложений ,
  • Разработка под Sailfish OS ,
  • Разработка под iOS
  • Привет, Хабр!

    На днях в офис e-Legion попал очаровательный смартфон, цвета #F9403E. По опознавательным знакам удалось установить его модель - Jolla C и операционку - Sailfish OS. Сайт производителя снабдил нас данными о характеристиках устройства и предоставил информацию о том, с чего начинать разработку.

    Под катом вы узнаете о том, как происходил процесс создания, отладки и установки мобильного приложения для Sailfish ОС.

    Характеристики для смартфона 2016 не выдающиеся, но ведь дело не только в железе, но и в том, как реализован софт.

    Для ОС заявлена поддержка Android-приложений, но зачем заниматься портированием, если можно написать «шедевр», используя нативные средства для разработки.

    Среда разработки

    Когда я начинал разработку для iOS, пришлось столкнуться с некоторыми сложностями. Наличие устройства под управлением Mac OS X - обязательное условие для XCode. У меня его не было. Варианта было два: хакинтош или виртуальная машина.
    Теперь же macOS является моей основной операционной системой, поэтому наличие на сайте Jolla SDK, протестированного под Mac OS X, меня приятно удивило. А флешка с установщиком Windows так и осталась пылиться в столе.

    Также заявлена поддержка и других платформ:

    • Ubuntu 14.04 32/64 bit
    • Windows 8 32/64 bit
    • OS X 10.9.2

    Также он служит для оформления приложения в цветах, соответствующих основной выбранной для смартфона теме.

    Label { text: "Hello habrahabr!" color: Theme.highlightColor x: Theme.horizontalPageMargin width: parent.width - x*2 font.pixelSize: Theme.fontSizeSmall wrapMode: Text.Wrap }

    Концепция чем-то напоминает использование UIAppearance из iOS, только настройки не ограничены рамками приложения.

    Создавать интерфейс из стандартных элементов иногда даже проще, чем в iOS. Создаем кнопку, указываем положение и смещение относительно других элементов. Готово. Пожалуй, с той же легкостью мне удалось работать с интерфейсом только начиная с iOS 9, когда был добавлен класс NSLayoutAnchor .

    К сожалению, не всё так хорошо с кастомизацией - в некоторых случаях придётся создавать элемент самостоятельно. Также нарекания вызвала реализация SilicaWebView , который так и не удалось использовать в приложении, компонент постоянно падал при попытке отображения информации. Вместо этого я использовал стандартный WebView , входящий в состав QtWebKit .

    При работе с web возникли и другие проблемы. Я запустил приложение на следующий день после начала разработки и вместо списка новостей увидел пустой экран. Несколько часов ушло на поиски решения проблемы. Как оказалось, приложение и встроенный в ОС браузер перестали загружать данные по HTTPS. Пару минуты меня мучила совесть, после чего HTTPS превратился в HTTP.

    Function requestUrl(source) { var url = "http://newsapi.org/v1/articles?" url += "source=" + source url += "&apiKey=" + apiKey return url } if (status === XMLHttpRequest.DONE) { var objectArray = JSON.parse(req.responseText); if (objectArray.errors !== undefined) { console.log("Error fetching tweets: " + objectArray.errors.message) } else { for (var key in objectArray.statuses) { var jsonObject = objectArray.statuses; news.append(jsonObject); } } if (wasLoading == true) { newsObject.isLoaded() } }

    Что касается остальных модулей приложения, их реализация не вызвала особых сложностей. Берём зарекомендовавший себя паттерн MVC, добавляем немного биндинга, щепотку делегирования, обильно посыпаем анимацией, перемешиваем… Получаем на выходе новостное приложение, написанное за пару ночей в попытках попробовать себя в разработке под новую платформу.

    Эмулятор и реальный смартфон

    Как я писал ранее, процесс запуска приложения практически не вызвал проблем. Перед установкой SDK размещаем на компьютере поддерживаемую версию VirtualBox, а установщик позаботится обо всём остальном.
    Далее выбираем платформу для запуска, жмём кнопку Start и запускаем приложение.

    Работа эмулятора не вызывает нареканий: всё происходит стабильно и быстро. В своё время мне выпал шанс поработать с одной из первых версий эмуляторов Android, 5-минутный запуск которого вызывал боль и приступы паники. Да, сейчас дела у него обстоят гораздо лучше, но осадок остался.
    Небольшие проблемы, правда, возникли при многократном запуске приложения. Старые инстансы приложения не завершаются, в результате чего у вас оказывается 5-9 одновременно запущенных экземпляров программы. После достижения некоторого максимального числа новая версия не стартует, приходится завершать старые экземпляры вручную.

    Запуск отладки на устройстве занял чуть больше времени. Без изучения документации процесс оказался интуитивно понятным. Побродив по настройкам и понажимав все подходящие, кнопки, я обнаружил возможность запуска приложения на устройстве с указанным IP-адресом. Подключил телефон к WiFi-сети, ввёл адрес и снова нажал на Start. Две минуты ожидания, и моя программа запустилась на Jolla C. Apple услышала наши молитвы и связка Xcode 9 + High Sierra + iOS 11 позволит нам творить такие же чудеса.

    Впечатления

    Не буду рассказывать о перспективах данной платформы в России, на эту тему и так хватает статей, да и начинать очередной холивар не хочется.

    Как пользователю мне понравилась отзывчивость устройства, возможность взаимодействовать с приложением прямо с главного экрана, изменение оформления всех приложений после изменения главной темы и интуитивно понятный интерфейс.

    Для написания приложений для платформы Sailfish OS используется язык С++ и библиотеки Qt, а также язык QML для описания графического интерфейса приложений. Поэтому, если вы уже имеете опыт написания приложений с использованием Qt и QML, разработка для Sailfish OS не вызовет у вас затруднений. Кроме того, Sailfish OS позволяет разрабатывать нативные приложения на языке Python. Однако, данная тема выходит за рамки данной статьи и не будет в ней описана (подробнее про это можно почитать, например, ).

    Как и для других мобильных платформ, разработка для Sailfish OS ведется с использованием SDK, предоставляемого создателями платформы. SailfishOS SDK включает в себя:

    • QtCreator - IDE, в которой собственно и предлагается вести весь процесс разработки.
    • Операционная система Mer (на самом деле это всего лишь прослойка для мобильных систем, основанных на Linux ядре, но для простоты мы опишем Mer как ОС), которая необходима для сборки приложений.
    • Эмулятор Sailfish OS.
    • Примеры, руководства и документация к API.

    Mer и эмулятор платформы поставляются в виде образов виртуальных машин для VirtualBox. Однако, сам VirtualBox в состав SailfishOS SDK не входит. Поэтому, перед непосредственной установкой SDK, необходимо вначале установить VirtualBox версии не ниже чем 4.1.18. Кроме того, при работе в Windows, перед установкой SDK так же необходимо установить пакет Windows Microsoft Visual C++ 2010 redistributable (x86).

    Сам SailfishOS SDK доступен для Linux, Windows и Max OS X, его можно . SDK поставляется в виде графического инсталлятора, поэтому установка SDK не вызывает никаких трудностей. После установки SDK вы полностью готовы к разработке приложений для платформы Sailfish OS.

    Создание Hello World! приложения так же не вызывает каких либо трудностей. Просто запускаем Qt Creator, нажимаем на кнопку «Новый проект» на главном экране (или через меню Файл -> Создать файл или проект...) и настраиваем проект:

    Автоматически сгенерированный проект немного сложнее, чем стандартный одностраничный Hello World. Это позволяет сразу же раскрыть некоторые особенности Sailfish OS. На главное странице отображается стандартное приветствие. Однако, если на этом экране выполнить жест swipe вниз (стандартное управление для данной платформы), вверху появится меню, позволяющее перейти на вторую страницу приложения, где расположен список элементов.

    Ниже приведены скриншоты Hello World приложения:

    Теперь давайте взглянем на код. Здесь все стандартно для QML приложений и поэтому знакомо любому, кто когда-либо писал приложения используя данный язык. Единственный .cpp файл описывает, какой .qml следует отобразить при запуске приложения. В нашем случае это HelloWorld.qml . Кроме того, в проекте содержаться 2 страницы, а также Cover Page, которая определяет вид приложения в диспетчере приложений Sailfish OS, который отображает миниатюры всех запущенных приложений и позволяет переключаться между ними, либо закрывать их.

    HelloWorld.qml описывает главное окно приложения. В нем указывается начальная страница приложения и Cover Page, а также дополнительные параметры приложения (в нашем случае это разрешенные ориентации экрана и ориентация экрана, которая будет использована по умолчанию):

    ApplicationWindow { initialPage: Component { FirstPage { } } cover: Qt.resolvedUrl("cover/CoverPage.qml") allowedOrientations: Orientation.All _defaultPageOrientations: Orientation.All }

    FirstPage.qml описывает начальную страницу приложения. Здесь все стандартно для QML приложений, однако есть некоторая особенность Sailfish OS, на которую следует обратить внимание:

    //... SilicaFlickable { anchors.fill: parent PullDownMenu { MenuItem { text: qsTr("Показать вторую страницу") onClicked: pageStack.push(Qt.resolvedUrl("SecondPage.qml")) } } //...

    Здесь используется элемент SilicaFlickable , который, во первых, позволяет сделать контент внутри самого элемента прокручиваемым, в случае если он полностью не влезает внутрь элемента. А во вторых, позволяет использовать PullDownMenu - то самое меню приложения, открываемое свайпом вниз.

    Кроме того, хотелось бы так же обратить внимание на CoverPage.qml , который описывает Cover Page приложения. Он содержит следующий элемент:

    CoverActionList { id: coverAction CoverAction { iconSource: "image://theme/icon-cover-next" } CoverAction { iconSource: "image://theme/icon-cover-pause" } }

    Данный элемент позволяет помимо вывода информации также предоставить пользователю возможность управления приложением непосредственно с его миниатюры в диспетчере открытых приложений.

    Для запуска приложения в эмуляторе необходимо в боковом меню выбрать комплект i486, нужный тип сборки (релиз или отладка) и способ установки Deploy as RPM Package :

    После этого просто нажать на зеленую стрелочку в боковом меню. Это действие соберет приложение, запустит эмулятор, установит и запустит ваше приложение на эмуляторе.

    Кроме того, можно просто запустить эмулятор нажав на кнопку в боковом меню. Это позволит вам просто исследовать Sailfish OS не имея устройства на данной платформе.

    На этом все, в будущем я постараюсь более подробно описать некоторые особенности разработки под платформу Sailfish OS.



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: