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

Как я к этому пришел? Всё просто на работе мне поставили задачу: «Разработать приложение для устройства SSSP». Деваться некуда, придётся разбираться.

Что такое SSSP и Tizen?

Samsung Smart Signage Platform (SSSP) профессиональные панели Samsung со встроенным плеером (System-on-Chip), также называемые «умными вывесками» (smart signage). В том числе серия дисплеев с ОС Tizen.

Tizen открытая операционная система на базе ядра Linux, широко используемая на устройствах Samsung (телевизорах, часах, профессиональных панелях и т.д.).

Теперь, немного познакомившись, мы можем перейти к основной теме.

Установка Tizen Studio

Для начала заходим на официальный сайт Tizen для разработчиков за нашим инструментом Tizen Studio. Скачиваем программу-установщик IDE.
Далее всё предельно понятно:

  • Читаем и принимаем лицензионное соглашение;

  • Выбираем положение SDK и данных и начинаем установку;

  • Готово. Закрываем программу установки.

После установки нужно открыть Package Manager и на вкладке «Extension SDK» добавить расширения:

  • Samsung Certificate Extension;

  • TV Extension Tools (т.к. будем писать на SSSP);

  • Актуальную платформу (на данный момент это TV-Extensions-8.0)

Package Manager в Tizen Studio

Подключение устройства

После того как мы установили все нужные нам компоненты, можно запустить Tizen Studio.

Теперь нужно удостовериться, что устройство готово к работе. Включаем девайс и начинаем настройку.

Уточню, что я работал с устройством SSSP 6.0, но предполагаю, что версии отличаются лишь внешним видом, поэтому кнопки и функционал плюс-минус одинаковые, и найти соответствующие настройки на устройстве с другой версией не составит труда.

При первом запуске нам предлагают выбрать язык. Затем начинается сама настройка.

  1. Выбор ориентации экрана

  2. Автовыключение (оставим выключенным)

  3. Подключаем к интернету (проводной/беспроводной)

  4. Выбор типа проигрывателя (выбираем «Запуск URL-адреса», чтобы запускать наше веб-приложение, размещенное на сервере)

  5. Установка часов (для удобства установим время)

После настройки переведем девайс в режим разработчика. Для этого продолжительно нажимаем на экран, после чего снизу открывается панель действий. Нажимаем на кнопку «Меню» со значком домика (если у вас нет возможности использовать сенсорный экран, то на пульте это кнопка «HOME» тоже со значком домика).

Вкладка «Меню» в интерфейсе устройства.

Открывается панель меню, где нажимаем на кнопку настройки запуска URL-адреса.

Переход на вкладку «Запуск URL-адреса»

На открывшейся странице нажимаем на «Режим разработчика». Я буду подключаться удаленно. Для этого нужно выбрать настройку «удаленный» и ввести IP вашего ПК. Перезагружаем наше устройство.

Переход на вкладку «Режим разработчика»

Есть! Вывеска готова к подключению, переходим в Tizen Studio.

Запускаем Device Manager.

Нажимаем на кнопку справа и открываем Remote Device Manager. Затем добавляем новое устройство.

Добавление нового устройства в Device Manager

Вводим IP вывески и имя устройства (порт оставляем по умолчанию).

Ввод имени и IP-адреса уст

IP можно посмотреть следующим образом: Меню (на пульте имеет иконку дома) состояние сети Настройки IP IP-адрес.

ВАЖНО! Для успешного добавления устройства в Device Manager нужно убедиться в следующем:

  • Устройство переведено в режим разработчика;

  • Введены правильные IP;

  • Оба устройства находятся в общей сети.

После добавления активируем соединение.

Добавленное устройство в Remote Device Manager

Наше устройство автоматически подключилось в Device Manager и теперь мы можем производить отладку прямо на девайсе.

Чтобы в дальнейшем не мучиться и не искать, сразу разрешим устройству устанавливать веб-приложения.

Правой кнопкой по устройству Permit to install applications.

Вкладка «Permit to install applications»

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

Создание сертификата

Сертификат нужен для установки приложения на устройство и подписи пакета сборки приложения.

Заходим в Certificate Manager (tools → Certificate Manager).

Создаем новый профиль сертификата.

Главный экран Tizen Certificate Manager

Выбираем сертификат Samsung.

Выбор типа профиля сертификата

Тип устройства выбираем TV.
Для создания нового профиля вводим имя сертификата.

Профиль сертификата

Создаем нового автора сертификата.

Создание нового автора сертификата

Дальше нас отправляют войти в Samsung аккаунт. Регистрируемся или входим уже в существующий аккаунт.

Подтверждение аккаунта Samsung на его же сайте

Читаем и принимаем условия пользования. Готово, переходим обратно к менеджеру сертификатов.

Сообщение об успешном входе в систему

Создаем сертификат дистрибьютора (или выбираем существующий).

Выбираем привилегию (нам достаточно публичной) и вводим DUID устройства. Позже можно будет добавить DUID нового устройства, а если у вас есть файл с множеством DUID'ов, то можно добавить через него.

Небольшая фича: если на этом этапе законнектиться с устройством, то его DUID впишется автоматически.

Вкладка добавления DUID

Поздравляю! Теперь мы можем пользоваться сертификатом и подписывать им наши проекты.

Не потеряйте сертификат, сделайте бэкап на каком-нибудь надежном удаленном репозитории!

Создание проекта

Начать создание проекта можно одним из трех способов:

  1. В меню Tizen Studio выбираем файл создать проект Tizen;

  2. На панели инструментов Tizen Studio нажимаем на значок Создать;

  3. Щелкаем правой кнопкой мыши в Project Explorer new Tizen Project.

Выбираем тип проекта. В моем случае выбираем тот, что слева.

Выбор типа нового проекта

Далее вы можете выбрать профиль и версию, поддерживаемые вашим проектом, например мобильное или носимое устройство. Кроме того, Tizen Studio показывает, какие платформы из поддерживаемых были установлены.

На этапе выбора шаблона отображается список шаблонов в зависимости от выбранного профиля и версии.

Экран выбора профиля и версии проекта

Выбираем тип нашего веб-приложения (в моем случае js).

Выбор типа приложения

Выбираем шаблон проекта из предложенных.

Выбор шаблона проекта

Справа можно посмотреть, как будет выглядеть шаблон приложения. Выбираем базовый проект и даем ему имя («BasicProject» по умолчанию).

Нажимаем финиш и видим, как базовое приложение на js создалось, и открылся файл конфигурации config.xml.

Файл конфигурации

Файл конфигурации веб-приложения Tizen, содержащий XML-элементы, включает корневой элемент <widget> и другие элементы, которые представляют информацию о приложении, такую как элементы конфигурации и расширенные элементы конфигурации Tizen для мобильных и носимых приложений. Эта информация используется при установке или запуске веб-приложения Tizen на платформе Tizen. Проект веб-приложения Tizen должен иметь файл config.xml в корневом каталоге проекта.

Существует 2 различных способа редактирования config.xml файла, которые описаны ниже:

  • Используя вкладку "Исходный код"
    Для этого открываем файл config.xml; Выбираем вкладку source (исходный код).

Вкладка «исходный код»
  • Используя вкладки формы.
    Открываем файл config.xml; Выбираем одну из вкладок.

    Если вы добавили какие-то изменения в вкладках, то после сохранения они отобразятся во вкладке «исходный код»

Если вы захотите подключить API самсунга к своему проекту, то мало его просто прописать в index.html, нужно еще и дать привилегию на это.

Например, вы хотите подключить к проекту Timer API. Для этого в файле index.html нужно прописать

<script type="text/javascript" src="$WEBAPIS/webapis/webapis.js"></script>

И, конечно, добавить привилегию.

Вкладка привилегий файла config.xml

В открывшемся окне необходимо прописать путь к нужной привилегии.

Выбираем «Custom Privileges» и пишем путь.

Вкладка добавления привилегий

Сохраняем файл, и вот, наша привилегия применилась.

Отображение подключенных привилегий
Подключенные привилегии во вкладке Source

Отлично, теперь можно использовать наше API.

Хочу заметить, что мое устройство (SSSP 6.0) относится также к устройствам b2b сегмента.
Для этих устройств есть собственное API, аналогичное webapis. Но когда я столкнулся с применением этих API, то понял, что не все функции, которые есть в webapis, есть и в b2b, и наоборот. Как проверить, какие функции в API доступны, я расскажу позже.

Следующий очень важный момент.

Если вы, как и я, хотите, например, использовать тег <iframe></iframe>, то есть один нюанс.

Чтобы в полной мере пользоваться навигацией к сайтам, нужно дать соответствующий доступ.

Перейдем на вкладку «policy» (в этом разделе описывается политика навигации по URL-адресам и безопасности содержимого для веб-сайтов).

Вкладка policy файла config,xml

Я хочу использовать ссылку https://www.wikipedia.org, значит мне нужно настроить для нее доступ.

В поле доступа добавляем новую строку. Вводим URL желаемой страницы и можем разрешить поддомены нажатием на это поле (false изменится на true).

Заполненные данные во вкладке policy.

Теперь вы можете вывести главную страницу википедии.

Вывод iframe в базовом проекте.

Зачем мне нужен Chromium?

Для запуска веб-приложений на Tizen установлен движок Chromium. Так как этот движок не новый, для дебага потребуется скачать Сhromium на ПК (советую Сhromium версии 79.0.3945.0, но не версии позже!). Я столкнулся с эти так: когда я запускал приложение в отладке, открывалась отдельная вкладка Сhrome, в консоли разработчика никаких логов и ошибок, кроме сообщения о том, что то, что я вижу сейчас просто скопировано, и это не имеет никакого отношения к моему коду.

Скачиваем Сhromium, запускаем приложение в режиме отладки. Открывается отдельно страницу Сhrome. Заходим в консоль разработчика на вкладку «источники», правой кнопкой нажимаем на выделенный файл и копируем адрес файла. Затем заходим в Chromium и вставляем ссылку. Теперь нам в полной мере доступны отладочные инструменты.

Также хочу заметить, что приложение пишется на JS стандарта ES5 ES6 (в зависимости от версии), что может быть достаточно затруднительным. Например, Tizen Studio будет ругаться на использование async/await, потому что в этом стандарте их не существует (они появились в стандарте ES7). Будет говорить что-то на подобии такого:

Описание ошибки в Tizen Studio.

А если писать на ES5, то студия будет ругаться на стрелочные функции, ведь они появились в шестом стандарте.

О чем ты? Какие ES5, ES6?

Экосистема программирования JavaScript (ECMAScript) представляет собой стандарт, описывающий базовые правила, которым должны следовать интерпретаторы JavaScript для обеспечения совместимости между различными платформами и браузерами. На протяжении эволюции ECMAScript, две ключевые версии, ES5 и ES6, занимают важное место.

ECMAScript 5 (ES5), принятый в 2009 году, внес ряд значительных изменений в язык, включая новые методы работы с массивами, строгий режим (strict mode) для улучшения безопасности кода, а также новые методы для работы с объектами. ES5 внес существенные улучшения в функциональные возможности языка, что способствовало его более эффективному и структурированному использованию.

ECMAScript 6 (ES6), также известный как ECMAScript 2015, был представлен в 2015 году и представляет собой более крупный шаг вперед в эволюции языка. ES6 включает в себя множество новых возможностей, таких как стрелочные функции, классы, расширенная работа с объектами, новый синтаксис для работы с промисами, шаблонные строки и многое другое. ES6 призван облегчить написание чистого, читаемого и эффективного кода, а также улучшить разработку больших и сложных проектов.

Установка приложения

Чтобы установить приложение на наше устройство, нужно собрать подписанный wgt-пакет.

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

Для создания нажимаем правой кнопкой на проект и выбираем «Build Signed Package».

Заливаем wgt-пакет на сервер, после чего потребуется создать рядом с ним еще один файл с названием sssp_config.xml. Вставляем в файл этот код.

<?xml version="1.0" encoding="UTF-8"?>
<widget>
<ver>2.3</ver>
<size>3969</size>
<widgetname>BasicProject</widgetname>
</widget> 

На устройстве заходим в настройки запуска URL-адреса (рассказывал выше, как это сделать, помните?). Вводим ссылку файла и запускаем.

Победа! Вы создали и запустили свое веб-приложение на устройстве Tizen!

Заключение

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

Хотя некоторые части гайда могут отпугнуть от использования Tizen, важно отметить, что в России, учитывая текущий контекст, он становится почти неотъемлемым компонентом среди операционных систем для смарт-телевизоров. Вопреки некоторым сложностям разработки, популярность и значимость Tizen продолжают расти, подчеркивая его важную роль в индустрии развлечений.

Надеюсь, статья получилось понятной и познавательной. Спасибо за прочтение!