Samsung
Компания
83,11
рейтинг
9 сентября 2013 в 12:03

Разработка → Обзор 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
Автор: @samsung_ru
Samsung
рейтинг 83,11
Компания прекратила активность на сайте

Комментарии (29)

  • 0
    Спасибо за статью, очень интересно. Все это доступно из опубликованных ранее образов TizenSDK? Мне понравилось, планирую начинать разбираться, но без реальных устройств ума не приложу что со всем этим делать… Какие планы выхода устройств на рынок? Каковы условия получения устройств для разработки?
    • 0
      Да, доступно из опубликованных ранее образов.
      Есть в планах привезти устройства для разработчиков на девлабы и хакатоны, серия которых планируется в ближайшее время, о чём мы обязательно сообщим. Следите за новостями.
      По поводу планов выхода устройств на рынок официальной информации нет.
      Неофициальная информация… есть в новостях. Twitter, tizenexperts, сообщества tizen в контакте, на фейсбуке, в G+.
    • +1
      По поводу устройств для разработчика можно ещё вот что попробовать: developer.tizen.org/support/development-unit-program/available-development-units
  • 0
    Создание объектов двухфазное (вначале конструктор, а затем явный вызов метода Construct() для объекта).
    Symbian-way, однако… Неужели для того, чтобы исключения из конструкторов не бросать? А как это сочетается с RAII?
    • 0
      Bada+Android+Moblin+Meego+Symbian+…
      Сборная солянка)
      • 0
        Для Андроида там ЕМНИП надстройка, для Бады, вроде, тоже. А от MeeGo — только Moblin.
        Вот двухступенчатое создание объектов огорчает. Я тоже не люблю исключения, но они всё же лучше, чем такое.
        • 0
          Всё это в погоне за производительностью и надёжностью.
          Очевидно, это пришло из bada, которая была real-time (местами) и к которой были повышенные требования в плане надёжности.
          Учитывая, что в экосистеме Tizen есть и автомобильная, и бытовая, и медицинская электроника, требования к надёжности тоже довольно высоки, и, мне кажется, такой подход по крайней мере вполне терпим.
        • 0
          Для Андроида там ЕМНИП надстройка

          Ядро какбы андроидовское.
          Практически вся графика пришла из Бады.
          От миго не только моблин)
  • 0
    Да, в этом плане похоже.
    Да, именно: чтобы не бросать исключения из конструкторов.
    RAII… вот здесь прямо с примером.

    upd: сорри, чуть промахнулся с комментарием.
  • 0
    А существуют ли готовые опубликованные прошивки с Tizen OS под существующие устройства? Судя по документации ранней по Tizen, самсунг использует Galaxy S2 / S3 / S4 (по мере выхода новых моделей) для разработки Tizen OS, — вот эти бы образы попробовать.
    • 0
      А смысл? На эмуляторе работает абсолютно также.
      • 0
        Особенно тактильные ощущения от мультитач-жестов.
        • 0
          Для разработки на начальной стадии не принципиально ИМХО.
          Поиграться в плане User Experience — да тут не спорю.
      • 0
        Не знаю как сейчас, когда я последний раз игрался, эмуляторы были вроде как x86-only. А хочется с ARM-ом поиграться, да например — понять, какова производительность системы на реальном устройстве.
    • 0
      Действительно, устройство для разработчиков по железу это S3 (на базе S2 начиная с версии SDK 2.2 уже не поддерживается).
      Но прошивки, которые лежат в открытом доступе, без изменений для него не подходят. В принципе, кто-то уже пытался сделать нечто похожее. Но это на свой страх и риск.
      Кстати, образы Tizen SDK Live великолепно подходят для прошивки устройств (т.е. содержат всё необходимое, за исключением, разве что, самих прошивок).
  • 0
    О, хорошо. Последний раз пробовал 1.0, и описанное в статье — большой шаг вперёд.
    По поводу эмулятора:
    — добавили туда KVM?
    — ARM добавили?
    Какие сейчас ветки образов и борды доступны?
    • +1
      KVM — да, ARM — нет.
      Тебе ли — сотруднику Интел — спрашивать? ))
      Есть Tizen, есть Tizen IVI. Первая заточена для мобильных девайсов, устройство для разработки только одно: RD-PQ (на баз S3)
      Для IVI целый выводок устройств, в том числе на ARM, плюс ещё и на PC умельцы ставили.
      • 0
        Спасибо. У нас немного другой проект, сейчас не очень слежу :)
        IVI расширили. На PC да, ещё со времён 1.0 отлично работало.
    • 0
      У тестировщиков в Tizen явно есть эмулятор на ARM'е.

      Обнаружил это путем того, что они не принимали наш сабмит присылая скриншот с «неправильной» картинкой. Подобную картинку я видел у себя в x86 эмуляторе, на девайсе она не воспроизводилась. Пришлось писать письмо с просьбой тестирования на реальном девайсе — проверили и приняли.

      До этого я обнаружил, что в эмуляторе они пользуются имплементацией OpenGL ES под названием AlexGL, а у этой реализации видимо есть проблемы с шейдерами для ES 2.0.
  • 0
    А у кого нибудь получалось запустить Dynamic Analyzer в 2.2?
    На картинках всё красиво а в реальности не запускается.
    На форуме уже висит чей-то вопрос по этому поводу, на который так ни кто и не ответил. :(
    • 0
      А можно подробнее о том, как он не запускается? И на форум ссылочку тоже.
      • 0
        Вот точно так как здесь написано: — developer.tizen.org/forums/native-application-development/unable-start-trace-dynamic-analyzer

        Пытаюсь понять причину фризов периодических при вызове функций OpenGL ES 1.1 (причём очень странных то в glDisableClientState то в drawPreparedBuffers, то ещё где-то подвиснет на 100-300 миллисекунд), думал профайлер поможет что-то прояснить.
        • 0
          В самплах есть приложение GlesCube11 — с ним то же самое?
          Проблема проявляется на устройстве или в эмуляторе?
          • 0
            Проявляется это и на девайсе и на эмуляторе ( с меньшими задержками правда).
            Игра уже пережила пачку платформ — iOS, Android, Symbian, Meeego.
            Даже под Bada выходила — эту ветку собственно и переношу на тайзен.
            На баде таких проблем не было.

            С кубиками сейчас хорошо погонял их на эмуляторе (800x480) — и таки да — иногда анимация там дёргается случайным образом.
            Не так часто как в игре, но если несколько раз запускать то иногда это замечаешь. Правда время задержки гораздо меньше чем в игре.
            Выглядит как кубик крутится, потом на долю секунды замирает и дальше всё пошло. Может и не проявится ни разу а может пару раз за запуск дёрнуться.

            CPU VT и GPU в настройках эмулятора включено, в манифесте акселерация тоже включена. SDK .2.2.0.
            • 0
              А девайс прошит соответствующей версией, драйверы видео там установлены?
              Напишите о проблеме на email, указанный в конце статьи.
              • 0
                Девайс прошит в 2.2
                Писать можно на русском? :)
                • 0
                  а драйверы?
                  можно на русском.
                  • 0
                    Прошивал не я — как ответил тот, кто прошивал — «девайс прошит текущей прошивкой 2.2, что там было, то и прошилось»
                    Надо ещё отдельно драйвера переливать?
                    • 0
                      В файлы прошивки не входят драйверы.
                      Кроме драйверов wlan в публичной прошивке.
                      Всё остальное ставится отдельно.
                      Так что узнайте у «того, кто прошивал», где он взял файлы прошивки и что конкретно сделал )
                      В общем, давайте на почту за технической поддержкой.
                      На хабре такие вопросы не очень правильно решать.

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

Самое читаемое Разработка