Снова здравствуйте, читатели!
В предыдущей статье мы сделали обзор web-части Tizen SDK. Сегодня мы сделаем обзор нативной части для тех, кому необходима максимальная производительность и полный доступ к функционалу устройства в своих приложениях.
Всех заинтересованных приглашаем под кат.
Введение
В предыдущей статье мы уже вкратце рассказали, что такое Tizen, с чем его едят и какая у него специфика. Мы узнали, что Tizen — это открытая операционная система на базе Linux, которая предназначена для широкого круга устройств, таких как смартфоны, планшетные компьютеры, автомобильные информационно-развлекательные системы, ультрабуки, «умные» телевизоры, цифровые камеры, офисная, бытовая и медицинская техника и прочая носимая электроника. Мы смотрели на него глазами web-разработчика. Сегодня, мы взглянем на Tizen SDK с другой, нативной стороны.
Архитектура Tizen
Вспоминаем из прошлой статьи, что самый нижний слой архитектуры представляет из себя ядро 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.
Интерфейс IDE интуитивно понятен и содержит всё необходимое для разработки, отладки, тестирования и профилирования приложений. Здесь также доступен Event Injector, с помощью которого можно эмулировать различные события, позволяя, таким образом, при разработке обойтись эмулятором.
Для нативной разработки Tizen IDE предлагает следующие инструменты/помощники:
- API and Privilege Checker. Этот инструмент позволяет выявить нарушения привилегий или API. Он поможет вам, например, если вы используете какой-либо функционал, требующий определённых привилегий, которые отсутствуют в настройках вашего приложения, или если вы используете устаревший API.
- Applications Settings Editor. Инструмент, позволяющий редактировать настройки вашего приложения.
- Call Stack View. Этот инструмент показывает информацию об отлаживаемом приложении в ситуации отказа.
- Content Assist. Помогает писать код быстро и эффективно, предоставляя контекстную помощь при написании кода.
- Manifest Text Editor. Позволяет редактировать манифест приложения. В манифесте хранится основная информация о приложении, а также различные глобальные настройки, такие как требуемые привилегии доступа и т.п.
- Oprofile. Инструмент для профилирования приложения.
- Project Wizard. Мастер создания проектов. Разработчику доступны следующие типы проектов: Empty Application, Form-based Application, IME Application, Library, OpenGL Application, Service Application, Tab-based Application, Theme Application.
- Smart Launch. Инструмент, позволяющий запустить приложение на устройстве (или эмуляторе) из IDE.
- Snippets. Средство управления заранее приготовленными фрагментами кода.
- Unit Test Tool. Инструмент для блочного тестирования, который позволяет создавать unit-test-проекты, управлять тест-кейсами и наборами тест-кейсов, анализировать покрытие кода тестами.
- Valgrind. Инструмент для профилирования памяти на эмуляторе.
Dynamic Analyzer
В составе Tizen SDK есть ещё один очень полезный инструмент для разработчика нативных приложений. Это Dynamic Analyzer. Он позволяет анализировать поведение вашего приложения в реальном времени, записывая изменения всех параметров в единый отчёт. Посмотреть, сколько памяти затрачивает приложение, насколько загружает процессор, как обращается к файловой системе и многое-многое другое позволяет Dynamic Analyzer.
UI Builder
Следующий инструмент — это Native UI Builder. Как вы уже догадались, это WYSIWYG-редактор пользовательского интерфейса. Не больше и не меньше.
UI Effect Builder
Если вам наскучил стандартный пользовательский интерфейс и душа требует сложных графических эффектов, вам понравится инструмент UI Effect Builder. Он позволяет моделировать интерактивные эффекты на основе физических законов и анимации. К сожалению, формат статьи не позволит передать то, как всё это выглядит. Но результат очень легко посмотреть, если собрать и запустить приложение EffectsApp, которое входит в состав примеров из Tizen SDK.
Tizen Emulator
И последний инструмент из состава Tizen SDK, который, без сомнения, будет полезен разработчикам нативных приложений, — это Tizen Emulator. Эмулятор представляет из себя виртуальную машину, основанную на QEMU. Он позволяет в «условиях, приближённых к боевым» испытать ваше приложение.
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@samsung.com
Всего наилучшего и до встречи в следующих статьях!
Tizen Eva Group
Автор: samsung_ru