Операционная система для разработчика

Ренат Няжеметдинов

Старший специалист по новым мобильным платформам, Samsung Russia Содержание

• Введение в Tizen

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

• Разработка приложений для Tizen

2 Введение в Введение в Tizen. О платформе

• Операционная система: – открытый исходный код – ядро • Архитектура: x86, ARM • Поддержка: – Linux Foundation – Tizen Association: • OEM:

• Операторы:

4 Введение в Tizen. Основные черты Tizen

• Web-ориентированная платформа – Высокий уровень поддержки стандартов HTML5 http://html5test.com – WebKit2 – Web-компоненты для интерфейса пользователя – Доступ к функциям устройства через Web API • Нативный API (C/C++) – Glibc, libstdc++, libxml2 – OpenGL® ES, OpenAL и OpenMP® – Высокий уровень совместимости с 2.0 API • Встроенный магазин приложений – Бесплатная регистрация – Предустановлен на все устройства Tizen

5 Введение в Tizen. Разновизности Tizen

Мобильные Компьютеры Информационно- устройства (Tizen PC) развлекательные системы автомобилей (Tizen IVI)

И другие устройства: • Телевизоры • Бытовая техника • Носимая электроника Часы (Gear 2) Камеры (NX300M) • Медицинская техника

6 Введение в Tizen. Profiles

• Mobile – мобильные устройства • IVI – развлекательные системы для транспортных средств • PC – desktops, laptops • TV – DTV/STB/IPTV • Wearables – носимые устройства (например, 2) • …

7 История Tizen

8 История релизов Tizen Mobile Profile Tizen 2.2.1 Tizen 2.2 Minor Update Tizen 2.1 Commercial Ready - Privacy menu in w/ Enhanced UX settings Tizen 2.0 Hybrid Web/Native, - H/W Menu & Back - Applications Enhanced Security, and installed in SD Web/Native dual key Tizen 1.0 Optimized Perf. cards framework - Better Font Legibility - Hybrid Web и native app - H/W LED Notification Add-on SDK Web-centric - Native API - Content security policy - Integration of Apps w/ - Accelerated platform - Униф. SDK для Web & - Trusted inter-app sharing Contact computing - Поддержка HTML5 native - Account management - Native API for Secure (OpenCL & - Tizen Device Web - Web Runtime – WebKit2 - QR code and image Element WebCL) API - Web Audio, HTML Media recognition - UI Customizer - Bada app - Web UI framework Capture - Systemd replacing init - Live Web App. Editing migration - HTML Drag & Drop, (основана на daemon - In app purchase Clipboard jQueryMobile - Twitter Extension)

Апр. 2012 Фев. 2013 Май 2013 Июль 2013 Нояб.2013 Tizen 3.x

- Multi-user - 64 bit architecture Q3 2014 - 3D UI Framework - Wayland based compositor

9 Архитектура (Mobile Profile) Архитектура Tizen

11 Архитектура Tizen. HW Adaptation Layer

12 Архитектура Tizen. Компоненты системы

13 Архитектура Tizen. Безопастность

• SMACK - Simple Mandatory Access Control Kernel. Обеспечивает защиту системы (системных демонов, файлов, сетевых интерфейсов, IPC …).

• SMACK обеспечивает изоляцию приложений (sandboxing) от несанкционированного доступа.

14 Архитектура Tizen. Web

15 Архитектура Tizen. WRT

Обеспечивает: • жизненный цикл Web-приложения • выполнение Web-приложения • доступ к ресурсам устройства из JS • контроль доступа Web-приложения

16 Архитектура Tizen. Графика

EFL – Enlightenment Foundation Libraries

Набор графических библиотек для построения графических приложений.

17 Разработка приложений для Разработка приложений для Tizen. Типы приложений

Tizen Store

• Нативные приложения

• Web-приложения

• Гибридные приложения

• Системные приложения

19 Разработка приложений для Tizen. Native Framework

20 Разработка приложений для Tizen. Пространства имён

App Media Telephony

Base Messaging Text

Content Net Ui

Graphics Security Uix

Io Shell Web

Locales Social

Locations System

21 Разработка приложений для Tizen. Жизненный цикл нативного приложения

22 Разработка приложений для Tizen. Web Framework

23 Разработка приложений для Tizen. Жизненный цикл web-приложения

24 Разработка приложений для Tizen. Web, нативные и гибридные

Web Hybrid Native

Скорость и стоимость разработки + +/- -

Портируемость + +/- -

Производительность - + +

Полный доступ к устройству - + +

Формат установочного файла .wgt .wgt* .tpk

25 Разработка приложений для Tizen. Концепция гибридного приложения

“Bridge” Native Service Web App

• Message Port • Websocket • JavaScriptBridge plugin

26 Разработка приложений для Tizen. Системные приложения

• Исчерпывающие возможности для доступа к устройству • Исчерпывающая производительность • Обычно разрабатываются OEM или разработчиками платформы • Не гарантируется обратная совместимость • Не публикуется в Tizen Store • Возможно добавить в официальные репозитории через формальную процедуру

27 Разработка приложений для Tizen. Tizen SDK

• IDE на базе Eclipse

• Документация

• Примеры приложений

• Кроссплатформенность

– Linux: Ubuntu®

– Microsoft Windows® XP (x86)

– Microsoft Windows® 7 (x86, x64)

– Apple Mac OS® X: 10.7 Lion/10.8 Mountain Lion (x64)

• Live Images (ISO):

https://developer.tizen.org/forums/sdk-ide/tizen-sdk-live-dvd

28 Разработка приложений для Tizen. Tizen SDK+ Tizen Native Tizen Web

• Компиляторы GCC 4.5, LLVM 3.1 • W3C/HTML5, CSS3, JavaScript • C++ ANSI ISO 14882 2003 • Code Editor, Project Explorer, Connection • Glibc, libstdc++, libxml2 Explorer • OpenGL® ES, OpenAL и OpenMP® • Web UI Framework • Code Editor, Project Explorer, Connection • Web UI Builder (WYSIWYG) Explorer • jQuery • UI Builder (WYSIWYG) • jQuery Mobile • UI Effect Builder • Web Simulator • Отладчик (GDB) • Device Emulator • Инструменты для профилирования • Event Injector (OProfile, Valgrind, Dynamic Analyzer) • CLI • Device Emulator (QEMU-based) • Event Injector • Unit-Test Tool • CLI

29 Разработка приложений для Tizen. Сторонние инструменты https://www.tizen.org/about/partner-tools • Appcelerator – Более 60 000 мобильных приложений – Более 175 млн. устройств – http://www.appcelerator.com/titanium/ • XDK – HTML5, JavaScript, CSS3 – Web-симулятор – Tizen, Android, iOS – http://xdk.intel.com/ • Marmalade – Быстрая и простая разработка – Большая популярность – https://www.madewithmarmalade.com/ • Sencha Touch – Самый популярный HTML5 фреймворк – Поддержка темы Tizen – http://www.sencha.com/products/touch/ • DevExtreme – HTML5 фреймворк и плагин для разработки в Visual Studio. – https://www.devexpress.com/products/html-js/

30 Разработка игр для Tizen https://www.tizen.org/about/partner-tools • Project Anarchy by – Игровой движок на C++ – Havok Engine – Инструменты физики, анимаций, ИИ – http://www.projectanarchy.com/ • GameSalad Creator – Быстрые проектирование и публикация – Нет необходимости в коде – http://gamesalad.com/creator • YoYo Games GameMaker: Studio – Рекордно быстрое и дешевое создание игр – http://yoyogames.com/studio • Unity Games – Издательский отдел Unity Technologies – Помощь в распространении игр – http://www.unitygames.com/

31 Разработка платформы. Роли в проекте

32 Разработка платформы. Права и обязанности участников Участник Описание деятельности Права и обязанности Architect Наблюдение, советы, Прогресс в целом направление развития Разработка технических целей Maintainer Поддержка пакетов и Внесение изменений в пакет обеспечение прогресса Отвечает за качество пакета Участие в release Reviewer Принятие решений Решения относительно изменений относительно изменений Участие в review Участие в release Release Engineer Создание предрелизных и Создание образов релизных образов Smoke test образов Участие в release Developer Разработка кода, другой Разработка кода вклад в разработку Внесение изменений Ревью Участие в дискуссиях QA Engineer Обеспечение качества Тестирование образов релиза

33 Разработка платформы. Алгоритм работы

34 Разработка платформы. Подготовка к работе (пререквизиты) 1. Регистрация на www.tizen.org

35 Разработка платформы. Подготовка к работе (пререквизиты) 2. Войдите на www.tizen.org

36 Разработка платформы. Подготовка к работе (пререквизиты) 3. Войдя на review.tizen.org, добавьте SSH Public Key (см. подробное описание в “How to Generate an SSH Key” на текущей странице сайта)

37 Разработка платформы. Подготовка к работе (пререквизиты)

4. Следуйте подробному описанию https://source.tizen.org/ru/documentation/developer- guide/environment-setup) – п.1.2. Убедитесь, что у вас есть доступ по ssh:

38 Разработка платформы. Подготовка к работе (пререквизиты)

5. Сконфигурируйте Git (https://source.tizen.org/ru/documentation/developer- guide/environment-setup) – п.1.3). Убедитесь, что Git настроен должным образом:

39 Разработка платформы. Как изменения становятся частью проекта Tizen

Основные понятия

1. Change – изменения, которые будут приняты в случае положительного решения. Для каждого Change есть свой уникальный ChangeId

2. Commit – изменения, входящие в Change (термин Git’а)

3. Patch Set – изменения, входящие в Change (термин Gerrit’а)

Patch Set это Commit отправленный на ревью и верификацию.

Change может включать один или несколько Patch Set’ов, решение о

принятии относится к последнему из них.

40 Разработка платформы. Как изменения становятся частью проекта Tizen Основные критерии при принятии изменений (Change)

Объективные /Технические • это компилируется? • нет ли ошибок в изменении (Change)? • это изменение (Change) делает то, о чём заявляется? • изменение (Change) следует правилам кодирования? • изменение (Change) вносится в нужную ветку Tizen?

Субъективные • изменение (Change) в духе идеологии TSG, архитектора, мейнтейнера? • добавляет ли изменение (Change) риск нестабильности? • данное решение наилучшее? • изменение (Change) сделано в подходящее время?

41 Разработка платформы. Как изменения становятся частью проекта Tizen Для положительного решения о принятии изменения (Change) код должен быть проверен (поле Verified) и просмотрен кем-то из ревьюеров (+2 в поле Code-Review). После этого автоматически произойдёт merge-процесс посланных изменений (Change). Об этом факте будет послано уведомление (письмо). Пример:

42 Разработка платформы. Как изменения становятся частью проекта Tizen

1. Практически работа с проектом Tizen заключается во внесении изменений (Change) - одного или нескольких. 2. Каждое изменение (Change) включается в Tizen проект при положительном принятии решения о его включении. Это решение основано на верификации (поле Verified) и ревью изменения (Change) (+2 в поле Code-Review). 3. Каждое изменение (Change) вносится посредством автоматического merge-процесса при удовлетворении условий из предыдущего пункта. 4. Автоматический merge-процесс осуществляется, если у данного изменения (Change) нет зависимостей от других изменений (Change), которые содержат ещё не замердженные родительские Commit’ы. В противном случае merge-процесс осуществляться не будет.

43 Разработка платформы. Работа (шаг за шагом)

1. Войдя на review.tizen.org, выберите Projects -> List. В появившемся списке выберете samples/web/FileManager проект. Нажмите на “SSH” чтобы получить строку для клонирования проекта:

44 Разработка платформы. Работа (шаг за шагом)

2. Далее клонируйте проект, перейдите в его директорию, посмотрите какие ветки существуют и переключитесь в нужную вам ветку, например, tizen_2.2:

45 Разработка платформы. Работа (шаг за шагом)

3. Скопируйте commit-msg hook в директорию проекта: scp –p –P 29418 [email protected]:hooks/commit-msg .git/hooks/

46 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта: • cоздайте свою локальную ветку, например, с именем model_improve: git checkout -b model_improve • внесите в этой ветке в код свои изменения • убедитесь, что присутствуют только нужные изменения:

47 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • проверьте какие изменения ещё не добавлены : “git status” • добавьте свои изменения: “git add js/app.model.js” • проверьте, что изменения добавлены: “git status” • выполните команду: “git commit -s”

48 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • убедитесь, что commit содержит Change-Id и Signed-off-by теги: “git log”

49 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • отправьте изменения (Commit) командой git push origin ваша_локальная_ветка:refs/for/удалённая_ветка пример: git push origin HEAD:/refs/for/tizen_2.2

50 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • используя ссылку с предыдущего слайда (см. вывод в консоль) можно посмотреть информацию об изменении (Change, который представляет собой один Patch Set (Commit)):

51 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • для review-процесса нужно добавить ревьюеров – используя кнопку “Add Reviewer” (напр. добавив ревьюера через его почтовый адрес) • после этого можно ожидать review изменений

52 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • после добавления ревьюера ему/ей придёт уведомление (письмо)

53 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • ревьюер может (например) высказать замечание (comments) к этому изменению (Patch Set), при этом автору будет выслано уведомление (письмо) о факте произведённых ревьюером действий

54 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • более подробную информацию (комментарии) можно посмотреть, пройдя по ссылке, относящейся к данному изменению (Change)

55 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • кликнув там, где оставлен комментарий, можно увидеть его содержимое

56 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • вносим исправления согласно комментарию и отправляем новые изменения (Commit)

57 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • пройдя по ссылке, относящейся к данному изменению (Change) можно увидеть то, что было недавно отправлено (Patch Set 2)

58 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • при этом всем ревьюрам (которые были добавлены ранее) придёт уведомление (письмо)

59 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • ревьюер может посмотреть разницу в коде – сравнив то, что стало, с тем, что было (Patch Set 1 и Patch Set 2)

60 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • удовлетворившись правкой, ревьюер может сделать +1 к изменению (Change) – после этого автору придёт уведомление об этом (письмо)

61 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • пройдя по ссылке, относящейся к данному изменению (Change), можно увидеть в Code-Review +1. Аналогично, в Code-Review может быть поставлено +2

62 Разработка платформы. Работа (шаг за шагом)

4. Работа с кодом проекта (продолжение): • далее данное изменение (Change) будет ожидать верификации (поле Verified) и одобрения (+2 в поле Code-Review)

О том, что произойдет дальше (автоматический merge-процесс) уже было рассказано выше, при этом работу по внесению изменений в проект Tizen можно считать успешно законченной.

63 Разработка платформы. Что делать в случае неуспеха (непринятии изменений)?

Возможные варианты: 1. в процессе верификации выяснилось, что код не работает (будет отметка в поле Verified) возможные решения: • сделать так чтобы он работал 2. код проверен и работает, но что-то не устраивает - есть замечания возможные решения: • исправить код согласно замечаниям 3. сделан reject (-2 в поле Code-Review) – изменение не нужно: возможное решение:

• написать в рассылке обоснование, что это изменение нужно – возможно будет принято положительное решение

64 Официальные ресурсы

Основной сайт: Для разработчиков: https://www.tizen.org https://www.developer.tizen.org

Исходный код: Сообщения об ошибках: https://www.source.tizen.org https://www.bugs.tizen.org

65 Выводы

• Tizen – универсальная операционная система с открытым исходным кодом на основе ядра Linux

• Tizen разрабатывается под покровительством Linux Foundation

• Компоненты, входящие в состав Tizen, обеспечивают высокую производительность и безопасность

• Tizen SDK предлагает для разработчика полный набор необходимых инструментов для разработки приложений с помощью технологий HTML5 и/или C/C++

• Поддержка со стороны компаний-партнёров Tizen Association и сообщества помогают быстро решать возникающие проблемы

66 Информация и поддержка • Сайты для разработчиков – Intel Developer Zone: http://software.intel.com/ru-ru – Samsung Developers: http://developer.samsung.com – Форумы для разработчиков: https://developer.tizen.org/forums • Программа предоставления устройств разработчикам: https://developer.tizen.org/support/development-unit-program/available- development-units • Инструменты – Web-симулятор: https://01.org/web-simulator/ – Remote Test Lab: http://developer.samsung.com/remotetestlab • Информация и новости на русском языке – Landing page: http://www.samsung.com/ru/samsungdev/ – Хабрахабр: http://habrahabr.ru/hub/tizen/ – ВКонтакте: http://vk.com/tizen_russia – Facebook: https://www.facebook.com/groups/rtdug/ – G+: https://plus.google.com/u/0/communities/117292026335703446671

67 Спасибо за внимание!

Ренат Няжеметдинов http://www.samsung.com/ru/samsungdev/

[email protected]