Sailfish OS от Jolla. Что такое Sailfish OS и зачем она нужна

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

Компания 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 будет развиваться как альтернативная операционная система и однажды найдёт свою нишу, которую будет уверенно держать.

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», а если такие планы есть, то где продукт, вызывающий восхищение и бурю эмоций своим функционалом, красотой и новизной?

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

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

    Впечатления

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

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