GrabDuck

Обзор Tizen SDK. Native

:

Снова здравствуйте, хабражители!

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

image

Всех заинтересованных приглашаем под кат.

Введение


В предыдущей статье мы уже вкратце рассказали, что такое Tizen, с чем его едят и какая у него специфика. Мы узнали, что Tizen — это открытая операционная система на базе Linux, которая предназначена для широкого круга устройств, таких как смартфоны, планшетные компьютеры, автомобильные информационно-развлекательные системы, ультрабуки, «умные» телевизоры, цифровые камеры, офисная, бытовая и медицинская техника и прочая носимая электроника. Мы смотрели на него глазами web-разработчика. Сегодня, мы взглянем на Tizen SDK с другой, нативной стороны.

Архитектура Tizen


image

Вспоминаем из прошлой статьи, что самый нижний слой архитектуры представляет из себя ядро Linux (для Tizen SDK 2.2 версия 3.4+) с драйверами устройств.

Чуть выше располагаются другие подсистемы ядра:

  • App Framework. Реализует функционал управления приложениями, в том числе запуск других приложений. Обеспечивает уведомление приложений об основных системных событиях, таких как недостаток памяти, низкий заряд батареи, изменение ориентации экрана и push-уведомления.
  • Graphics & UI. Реализует функционал, связанный с графикой и UI, в том числе EFL (Enlightenment Foundation Libraries), оконная подсистема, OpenGL и т.п.
  • Multimedia. Обеспечивает поддержку мультимедиа: видео, аудио, изображения, VoIP, управления метаданными.
  • Location. Представляет функционал для геопозиционирования (GPS, WPS, Cell ID, сенсоры).
  • Messaging. Реализует функционал, связанный с SMS, MMS, email и IM.
  • Web. Реализует Tizen Web API и включает в себя WebKit, обеспечивает поддержку web-приложений.
  • Security. Реализует функционал, связанный с безопасностью, контролем доступа, управления сертификатами и т.п.
  • System. Отвечает за взаимодействие с устройством (сенсоры, дисплей, вибратор), управление электропитанием, мониторинг событий от таких компонент, как USB, MMC, зарядное устройство, ear jack, управление пакетами, обновление устройства, взаимодействие с alarm-сигналами.
  • Base. Содержит ряд системных библиотек, реализующих, помимо базовых функций, функционал для взаимодействия с базами данных, локализации и работы с XML.
  • Connectivity. Отвечает за всё, что связано с сетевыми взаимодействиями (3G, WiFi, Bluetooth, HTTP, NFC).
  • Telephony. Реализует функционал, относящийся к связи и работе модема (UMTS, CDMA, GSM).
  • PIM (Personal Information Management). Отвечает за такой функционал, как взаимодействие с календарём, контактами и задачами.

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

Верхний слой представляется из себя пользовательские приложения, которые, напомним, в Tizen бывают трёх типов: web, нативные и гибридные.

Доступ к перечисленным выше подсистемам из приложений осуществляется посредством двух фреймворков: Web Framework и Native Framework. Как и договаривались, сегодня мы остановимся на последнем.

Native Framework


В Tizen Native Framework всё необходимое для доступа к функциональности описанных ваше компонент ядра скомпоновано в лаконичную структуру из 19 пространств имён:
App Media Telephony
Base Messaging Text
Content Net Ui
Graphics Security Uix
Io Shell Web
Locales Social
Locations System
О назначении каждого из пространств имён можно догадаться по названию: это управление жизненным циклом приложения, работа с основными типами данных, управление контентом, работа с 2D- и 3D-примитивами, текстом, изображениями, файлами, базами данных, реестрами, гопозиционирование, работа с аудио и видео, сообщениями различного типа, сетевое взаимодействие, криптография, управление доступом и работа с сертификатами, управление внешним интерфейсом устройства, управление встроенными аппаратными возможностями, телефония, управление графическим интерфейсом как на стандартном, так и на продвинутом уровнях, работа с сенсорами, работа с web – иными словами, абсолютно полный неограниченный доступ к функционалу Tizen.

При разработке нативных приложений с помощью Tizen Native Framework, необходимо помнить следующее:

  • Разработка ведётся на языке C++ ANSI ISO 14882 2003 (GCC, LLVM)
  • В Tizen Native Framework не используются стандартные исключения C++. Это не означает, что вы не сможете задействовать этот механизм в своём коде, но внутри фреймворка этот механизм не используется.
  • В Tizen Native Framework вместо исключений используются коды возврата.
  • Создание объектов двухфазное (вначале конструктор, а затем явный вызов метода Construct() для объекта).
  • Суффикс ‘N’ для названий функций, которые передают возвращаемый объект во владение разработчику. Т.е. разработчик ответственен за самостоятельное удаление таких объектов после вызова соответствующих функций.
  • Повсеместно используется и поощряется использование идиомы RAII (Resource Acquisition Is Initialization, получение ресурсов есть инициализация).

Нативные приложения в Tizen разделяются на 2 типа: UI-приложения и сервисные приложения. И те, и другие обладают неограниченным доступом к функционалу устройства с максимальной производительностью. Жизненный цикл UI-приложений несколько отличается от жизненного цикла сервисных приложений.

В комплект Tizen SDK также таже входит множество примеров приложений, разработанных с помощью Tizen Native Framework. Опираясь на эти примеры, вы можете с лёгкостью приступить к разработке своего приложения.

А теперь, как и обещали, мы познакомим вас с инструментарием, который предлагает Tizen SDK.

Tizen IDE


Интегрированная среда разработки, входящая в состав Tizen SDK, основана на Eclipse с набором необходимых дополнений и адаптаций для разработки приложений для Tizen. Перспективы Tizen Web и Tizen Native несколько отличаются. Ниже показан скриншот Tizen IDE с перспективой Tizen Native.

image

Интерфейс IDE интуитивно понятен и содержит всё необходимое для разработки, отладки, тестирования и профилирования приложений. Здесь также доступен Event Injector, с помощью которого можно эмулировать различные события, позволяя, таким образом, при разработке обойтись эмулятором.

Для нативной разработки Tizen IDE предлагает следующие инструменты/помощники:

  • API and Privilege Checker. Этот инструмент позволяет выявить нарушения привилегий или API. Он поможет вам, например, если вы используете какой-либо функционал, требующий определённых привилегий, которые отсутствуют в настройках вашего приложения, или если вы используете устаревший API.
  • Applications Settings Editor. Инструмент, позволяющий редактировать настройки вашего приложения.

image
  • Call Stack View. Этот инструмент показывает информацию об отлаживаемом приложении в ситуации отказа.
  • Content Assist. Помогает писать код быстро и эффективно, предоставляя контекстную помощь при написании кода.

image
  • Manifest Text Editor. Позволяет редактировать манифест приложения. В манифесте хранится основная информация о приложении, а также различные глобальные настройки, такие как требуемые привилегии доступа и т.п.
  • Oprofile. Инструмент для профилирования приложения.

image
  • Project Wizard. Мастер создания проектов. Разработчику доступны следующие типы проектов: Empty Application, Form-based Application, IME Application, Library, OpenGL Application, Service Application, Tab-based Application, Theme Application.
  • Smart Launch. Инструмент, позволяющий запустить приложение на устройстве (или эмуляторе) из IDE.

image
  • Snippets. Средство управления заранее приготовленными фрагментами кода.

image
  • Unit Test Tool. Инструмент для блочного тестирования, который позволяет создавать unit-test-проекты, управлять тест-кейсами и наборами тест-кейсов, анализировать покрытие кода тестами.
  • Valgrind. Инструмент для профилирования памяти на эмуляторе.

image

Dynamic Analyzer


В составе Tizen SDK есть ещё один очень полезный инструмент для разработчика нативных приложений. Это Dynamic Analyzer. Он позволяет анализировать поведение вашего приложения в реальном времени, записывая изменения всех параметров в единый отчёт. Посмотреть, сколько памяти затрачивает приложение, насколько загружает процессор, как обращается к файловой системе и многое-многое другое позволяет Dynamic Analyzer.

image

UI Builder


Следующий инструмент — это Native UI Builder. Как вы уже догадались, это WYSIWYG-редактор пользовательского интерфейса. Не больше и не меньше.

image

UI Effect Builder


Если вам наскучил стандартный пользовательский интерфейс и душа требует сложных графических эффектов, вам понравится инструмент UI Effect Builder. Он позволяет моделировать интерактивные эффекты на основе физических законов и анимации. К сожалению, формат статьи не позволит передать то, как всё это выглядит. Но результат очень легко посмотреть, если собрать и запустить приложение EffectsApp, которое входит в состав примеров из Tizen SDK.

image

Tizen Emulator


И последний инструмент из состава Tizen SDK, который, без сомнения, будет полезен разработчикам нативных приложений, — это Tizen Emulator. Эмулятор представляет из себя виртуальную машину, основанную на QEMU. Он позволяет в «условиях, приближённых к боевым» испытать ваше приложение.

image

Command-Line Interface (CLI)


И конечно же, никуда без командной строки для тех, кто без неё по каким-либо причинам не может.
native-gen Генерирует новый проект.
native-make Собирает проект.
native-packaging Упаковывает проект.
native-install Устанавливает приложение на устройство (или эмулятор).
native-uninstall Удаляет приложение с устройства (или эмулятора).
native-run Запускает приложение на устройстве (или эмуляторе).
native-debug Запускает отладку приложения на устройстве (или эмуляторе).
На этом мы ставим точку в нашем развернутом обзоре. Разве что, осталось упомянуть достаточно подробную документацию, которая также входит в состав Tizen SDK.

Как вы сами убедились, в Tizen SDK есть всё для быстрого старта полноценной разработки нативных приложений для Tizen, к которому вы теперь полностью готовы, а если успели прочитать наш обзор web-части, то ещё и web- и гибридных приложений. Непосредственно о разработке приложений для Tizen мы надеемся рассказать вам в следующих статьях.

Более детальное описание инструментов Tizen SDK можно найти ЗДЕСЬ. Техническую поддержку и ответы на вопросы мы осуществляем здесь: dev.cis@partner.samsung.com

Всего наилучшего и до встречи в следующих статьях!

Tizen Eva Group