Selfish операционная система. Что такое Sailfish OS и зачем она нужна. А знали ли Вы, что

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.

Компания Jolla, занимающаяся разработкой Sailfish OS, неожиданно для многих анонсировала третью версию своей операционной системы. Презентацию провели в Барселоне в рамках MWC 2018.

В связи с этим мероприятием мы решили продолжать рассказывать про альтернативные Android и iOS мобильные операционные системы. Ранее мы рассмотрели Теперь очередь дошла и до Sailfish.

Причём тут Nokia и Intel?

Это долгая история. Началась она 13 лет назад. Тогда, в 2005 году, старая-добрая Nokia славилась своими , а модель ещё не славилась своей неубиваемостью. В те майские дни середины нулевых финский производитель презентует свой карманный компьютер Nokia 770. Это было революционное устройство: по Wi-Fi оно ловило интернеты! Тут были VoIP и сервисы Google Talk.

Планшет поддерживал протокол Jabber! Боже, сколько в этих словах ностальгии! В продажу планшет поступил в ноябре 2005 года. 770-й работал на первой версии Maemo - 2005OS. Позже вышли Nokia N800, N810, а затем и N900. Все они были под управлением Maemo.

Интерфейс Maemo на Nokia N900

Из Финляндии перемещаемся в США. В 2007 году выходят нетбуки с процессорами Intel Atom. Компания хочет продвигать эти устройства, для чего необходима не очень требовательная к ресурсам операционная система. Windows не подходит - Microsoft тупо неинтересен Atom. Тогда возникает проект Moblin. Название является сокращением от Mobile Linux. Как нетрудно догадаться, новая операционная система была рассчитана на мобильные устройства. Она базировалась на открытом исходном коде Linux.


Интерфейс Moblin

Восемь лет назад, в феврале 2010 года, Nokia и Intel объявили об объединении усилий. Совместно разрабатываемая операционная система получила название MeeGo. Тогда было объявлено, что Nokia N8 станет последним смартфоном на Symbian OS (другая операционная система Nokia, которая была установлена на большее количество устройств), а N9 выйдет уже под управлением MeeGo.


Nokia N9 на MeeGo

Это было очень круто: пользователи могли выбрать между устройствами на iOS, Android, Windows Phone, MeeGo или вообще купить BlackBerry! Но, к сожалению, такая идиллия длилась недолго.

В 2011 году Nokia неожиданно закрыла MeeGo. Проект перестали развивать, несмотря на популярность Nokia N9. Таким образом, первый смартфон на этой версии ОС стал и последним.

Часть команды, занимавшаяся разработкой MeeGo, покинула Nokia для создания собственной компании. Её назвали Jolla. Команде не удалось получить в своё ведение большинство патентов на операционную систему, так что многие её элементы пришлось разрабатывать заново. Например, дизайн.

На чём Jolla пыталась выехать?

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


На интерфейсе также делали особый акцент. Так, Марк Диллон, сооснователь компании, говорил следующее: «Интерфейс Sailfish OS уникален тем, что использование устройства возможно только при помощи жестов». Из любого приложения проводите свайп вправо - откроется центр уведомлений. Снизу вверх - открывается список установленных приложений. Жестов было очень много. Все они заменяли привычные кнопки. К этому сейчас пытаются прийти производители Android-смартфонов, и отказаться от наэкранных кнопок, «съедающих» значительную часть экрана.

В 2012 году компания анонсировала свой смартфон Jolla. Он поступил в продажу через год. Аппарат отличался необычным внешним видом. Казалось, что он склеен из двух разных смартфонов. Чуть позже был анонсирован планшет Jolla Tablet, но тут у компании случились финансовые трудности. Планшет выпущен не был.


Чем живёт Jolla сейчас?

С тех пор компания решила сосредоточиться на своей операционной системе Sailfish OS. Например, непосредственно внутри Jolla велась разработка прошивки для смартфонов Nexus 4 и OnePlus One.

В 2016 году компания лицензировала Sailfish OS для российской «Открытой мобильной платформы». Совместными усилиями была выпущена Sailfish Mobile OS RUS. В списке поддерживаемых устройств - смартфон для госслужащих и корпоративных клиентов «Ермак ОМП», а также российский смартфон INOI R7. Подобные российской лицензионной ОС операционные системы существуют в Бразилии, Китае и других странах.


Ермак ОМП

Третья версия Sailfish будет рассчитана на большее количество устройств. На MWC анонсировали её появление осенью на упомянутом выше INOI R7, Sony Xperia XA2, КПК Gemini PDA, а также на неназванных кнопочных телефонах с поддержкой 4G. В Sailfish OS 3 сделают акцент на безопасности. Например, в случае потери или кражи устройства пользователь сможет дистанционно стереть все данные.

Операционная система поддерживает Android-приложения, но только в том случае, если пользователь заплатил за Sailfish OS 50 долларов.


Sony Xperia XA2 с установленной Sailfish OS

Доминирование двух операционных систем на рынке - не самая лучшая для пользователя ситуация. В этом случае технический прогресс, о котором мы так мечтаем, будет стопориться отсутствием интереса к развитию. Чем больше будет выбор, тем лучше будет выбирающему. Надеемся, Sailfish будет развиваться как альтернативная операционная система и однажды найдёт свою нишу, которую будет уверенно держать.

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. Статья в большей степени ориентирована на пользователей 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 позволит нам творить такие же чудеса.

    Впечатления

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

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