Обзор операционной системы Sailfish OS. Есть ли у Sailfish недостатки? Какие телефоны на Sailfish можно купить

Изучив смартфон 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-окружении и другие улучшения.

Здравствуй, читатель!

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

А знали ли Вы, что:

1. Если держать палец на приложении и перевернуть смартфон, то приложение НЕ сменит ориентацию.
Представим на примере: Вы просматривали интернет со своего смартфона стоя, потом решили прилечь (при этом блокировка ориентации телефона выключена), чтобы ориентация не изменилась, просто удерживайте палец на экране пока смартфон меняют свою позицию в пространстве.

2. Двойное нажатие на хардверную кнопку блокировки разблокирует Ваше устройство и Вы сразу попадете на Домашний Экран (Home), минуя Экран Блокировки (Lock screen).
Следует учитывать, что двойное нажатие не работает, если у вас стоит пароль при разблокировке.

3. С версии 2.0.2 в Sailfish OS появилась функция записи звонков.
Чтобы активировать ее зайдите в Настройки (Settings) - Приложения (Apps) - «Запись звонков» (Call Recording).

Примечание:
Вообще, в Настройках (Settings) - раздел Приложения (Apps) можно настроить многие приложения за авторством самой Jolla, а также произвести некоторые действия над Android-приложениями (очистить кеш, остановить программу и так далее).

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

5. Из приложения Tutorial можно выйти сразу, для этого в самом начале по часовой прокликайте углы, начиная с верхнего левого.

6. С версии 2.0.2 появился простенький файловый браузер «из коробки», чтобы его найти отправляйтесь в Настройки (Settings) - Хранилище (Storage) - Внешняя память/Карта памяти (User data) - свайп сверху вниз - опция Файловый менеджер (File manager).

7. С версии 2.0.2 появляется возможность делать скриншоты, для этого выполните полусекундное нажатие на обе кнопки громкости.

8. Для ценителей Semantic Web : в Sailfish OS используются некоторые технологии Семантической паутины:

$ tracker- tracker-control tracker-info tracker-sparql tracker-tag tracker-import tracker-search tracker-stats

Tracker-sparql!
В частности, трекер используется медиапроигрывателем.

Пара относительно очевидных штук, но почему-то некоторые о них не знают:


-в приложении Камера (Camera) можно делать фотографии просто нажимая на каретку громкости (правда перед фотографией приложение не обновит фокус);

В приложении Камера (Camera) можно регулировать зум, приближая два пальца друг к другу на экране и отдаляя друг от друга; :)

В Настройках (Settings) во вкладке Жесты (Gestures) неплохо включить «Быстрое закрытие приложения» (Quick app closing), чтобы свайпом сверху вниз сразу закрывать программу;

Там же, в жестах можно включить свайп слева направо, чтобы попадать в Ленту Событий (Events), вместо Домашнего Экрана (Home);

Если телефон заблокирован, то при двойном нажатии на экран Вы попадете в Экран Блокировки (Lock Screen);

Сменить обои на свою собственную картинку можно только из галереи. Для этого откройте картинку в галерее (Gallery), свайп сверху вниз, затем выберите опцию «Создать атмосферу» («Create ambience»). Вы попадете на страницу настройки атмосферы, там можно подогнать цвета на свой вкус или просто оставить как есть и радоваться;

В Настройках (Settings) в разделе «Ввод текста» (Text input) можно разрешить разделение клавиатуры в альбомном режиме;

Советую поставить Warehouse - клиент для Openrepos. Сначала разрешите установку приложений из ненадежных источников: Настройки (Settings) - «Непроверенные программы» (Untrusted Software), затем скачайте.rpm файл по выше указанной ссылке и установите его из консоли или с помощью приложения File Browser. Openrepos является репозиторием, в котором есть большое количество приложений, которых нет в Jolla Store по различным причинам (к примеру, Jolla Store запрещает использование демонов, смотрите FAQ). В Openrepos нет QA, что несет некоторые риски, но в то же время дает полную свободу разработчику.

Бонус

Несколько приложений, которые могут показаться Вам полезными (на мой взгляд):
-SearchNemo - поиск файлов / конкретного текста в текстовых файлах по всей файловой системе;

-LLs vPlayer (только в Openrepos) - всеядный видеоплеер с приличным количеством плюшек, которых нет в обычном плеере;

-Screen-message - выводит набранный текст на экран (к примеру, можно использовать для записок);

-Sidudict - неплохой офлайн словарь на основе QStarDict. Минус: если добавить большое количество словарей, то приложение вылетает, либо запускается слишком долго, так как при каждом запуске выполняется реиндексация словарей с нуля;

-File Browser - отличный файловый браузер для Sailfish OS;

-Lists - ToDo-органайзер. На мой взгляд, автор очень интересно обыграл функциональность Обложки (Cover);

-Lighthouse - системный монитор для Sailfish OS;

-Battery Log - приложение, чтобы следить за расходом батарейки, умеет строить график;

-Unplayer (только в Openrepos) - отличный музыкальный плеер с возможностью проигрывания музыки прямо из директорий;

-Kat - активно развивающийся VK-клиент;

-Battery Overlay - если Вам непривычно, что индикатора заряда находится только на Домашнем Экране (Home), то это приложение решит проблему;

-Recorder - диктофон;

-Textractor - OCR;

-TAO Translator - клиент для Google, Yandex, Bing словарей;

-WiFi Analyzer - просмотр количества и мощности WiFi сетей;

-TinyEdit - текстовый редактор с минимумом функционала;

-Papocchio - дает возможность рисовать на экране.

В написании данной статьи очень помогло русское сообщество Sailfish OS, обитающее в

  • Разработка мобильных приложений ,
  • Разработка под 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 позволит нам творить такие же чудеса.

    Впечатления

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

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

    21 ноября в Хельсинки, Финляндия, компания Jolla в рамках двухдневной конференции стартапов SLUSH 2012 провела презентацию своих разработок: операционной системы Sailfish OS, интерфейса Sailfish UI и инструментов для разработчиков Sailfish SDK. Началась презентация Jolla в довольно оригинальной форме, на сцену были приглашены участники команды в черных футболках со слоганами вроде «Do. Unlike», «Unlike», «Unlike | Others», «Unlike the ordinary» и некоторыми другими. Так что можно было сразу понять основную мысль, которая и станет ключевой для всей презентации, ну или основной посыл Jolla – будь другим, будь не как все.

    Затем на сцене остался Marc Dillon, новый CEO компании Jolla, занимавший ранее пост COO (главный операционный директор, англ. Chief Operating Officer), а до перехода в Jolla много лет проработавший в Nokia, в том числе с проектами Symbian, S40 и MeeGo. Марк начал свою речь словами о свободе, свободе выражения, свободе выбора и так далее, затем рассказал о том, что у них потрясающая команда и они разрабатывают по-настоящему классную операционную систему (great operating system sailfish), желая создать действительно открытую ОС, быструю и гибкую.


    Начинается ОС с экрана блокировки, который появляется после двух тапов по дисплею. Здесь отображается время и значки уведомлений, когда есть уведомления данного типа. Если потянуть экран вниз – появятся ярлыки важных программ: смена профиля, камера и еще несколько. Если потянуть вверх – на мгновение отобразится текущий уровень заряда и уровень сигнала сети, а если потянуть еще дальше – откроется экран с мини-картинками работающих приложений и иконками перехода к звонкам, сообщениям, камере и браузеру в нижней области. Можно пролистнуть еще дальше – отобразится меню со всеми установленными программами (как в Android и iOS). То есть система вызова тех или иных окон взята из последних версий Meego, примерно то же самое было на Nokia N9, но для перехода между окнами использовались свайпы влево и вправо от экрана, тогда как здесь – вниз и вверх, а жесты влево-вправо заняты на функцию сворачивания открытой программы в фон. Рабочих столов в Sailfish нет, есть стартовый верхний экран, экраны со всеми значками программ, ну и по центру экраны с мини-картинками запущенных приложений, получается.

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

    Затем речь зашла о настоящей многозадачности, реализованной в Sailfish OS. И здесь Марк привел странный пример. Они запустили на смартфоне музыкальный плеер и включили проигрывание музыки. Потом плеер свернули, он появился в виде мини-картинки на главном экране. Марк сказал, что в Sailfish для управления музыкой или смены трека вам не нужно снова открывать плеер, достаточно выбирать кнопки на мини-картинке работающего приложения. По сути, это тот же виджет в Android, ничего нового с точки зрения пользователя я не вижу, но Марк убеждал публику, что это круто, и сказал, что это и есть настоящая многозадачность. Основная идея работающих на главном экране мини-картинок с приложениями, по словам Марка, заключается в том, что вам не нужно открывать полное окно программы для управления ее часто используемыми функциями, это можно делать и с главного экрана при помощи мини-картинок программ. Разница с виджетами из Android будет заключаться, вероятно, в том, что в Sailfish каждое приложение будет обязательно иметь функционал вывода на главный экран в виде рабочего мини-блока, тогда как в Android виджеты – дело добровольное.

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

    Вы можете посмотреть короткое двухминутное видео с демонстрацией всех описанных выше функций, вот оно:

    И есть еще десятиминутное видео, но в нем, как ни странно, продемонстрированы только эти же функции, ничего лишнего:

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

    Когда я только начал готовить этот материал, единственным источником информации для меня оказалось как раз короткое видео. Затем я сел и стал искать больше информации, все же Jolla впервые публично показали свою разработку с момента анонса работ над системой (если я не ошибаюсь), и я надеялся найти больше данных. Однако сейчас оказывается, что функционал, показанный в трехминутном ролике, - это все, что может показать Jolla на данном этапе. Никаких интересных данных о том, как и кто будет заниматься производством смартфонов на базе этой системы, на SLASH 2012 не прозвучало, кроме перечисления списка партнеров вроде Opera Mobile и других.


    С одной стороны, проект Sailfish OS выглядит интересно, как минимум, с той позиции, что нашлись люди, подхватившие хорошую в целом систему, над которой можно работать и которая имеет потенциал, и решили развивать ее, несмотря на отказ Nokia от развития ветки связанных с MeeGo устройств. C другой стороны, после увиденного сложно поверить в успех Sailfish в каком-нибудь виде, с момента выхода Nokia N9 и закрытия Meego-направления прошло уже больше года, а все, что показали Jolla в Sailfish OS, это немного переделанный интерфейс той же MeeGo OS 1.2 Harmattan, только экраны теперь сменяются не слева направо, а снизу вверх. Новый функционал – это, как минимум, работающие на главном экране мини-приложения, но ведь этого недостаточно для конкуренции с другими ОС, а ничего большего пока не показали.

    Остаются без ответов и другие вопросы – планирует ли вообще Jolla выводить свою ОС на уровень систем iOS и Android, или же все, чего хотят добиться в компании, это стабильное комьюнити и работающая система на базе наработок MeeGo для гиков? Если в планах нет конкуренции с iOS и Android, то для чего фразы «great operating system sailfish» и «great company Jolla», а если такие планы есть, то где продукт, вызывающий восхищение и бурю эмоций своим функционалом, красотой и новизной?

    Артем Лутфуллин ()

    Для написания приложений для платформы 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.