Операционная система Tizen для разработчика Ренат Няжеметдинов Старший специалист по новым мобильным платформам, Samsung Russia
Операционная система Tizen
для разработчика
Ренат Няжеметдинов
Старший специалист по новым
мобильным платформам,
Samsung Russia
Содержание
2
• Введение в Tizen
• Архитектура Tizen
• Разработка приложений для Tizen
Введение в
Введение в Tizen. О платформе
4
• Операционная система:
– открытый исходный код
– ядро Linux
• Архитектура: x86, ARM
• Поддержка:
– Linux Foundation
– Tizen Association:
• OEM:
• Операторы:
Введение в Tizen. Основные черты Tizen
5
• Web-ориентированная платформа
– Высокий уровень поддержки стандартов HTML5
http://html5test.com
– WebKit2
– Web-компоненты для интерфейса пользователя
– Доступ к функциям устройства через Web API
• Нативный API (C/C++)
– Glibc, libstdc++, libxml2
– OpenGL® ES, OpenAL и OpenMP®
– Высокий уровень совместимости с bada 2.0 API
• Встроенный магазин приложений
– Бесплатная регистрация
– Предустановлен на все устройства Tizen
Введение в Tizen. Разновизности Tizen
6
Мобильные устройства
Компьютеры (Tizen PC)
Информационно-развлекательные
системы автомобилей (Tizen IVI)
И другие устройства:
• Телевизоры
• Бытовая техника
• Носимая электроника
• Медицинская техника Часы (Gear 2) Камеры (NX300M)
Введение в Tizen. Profiles
7
• Mobile – мобильные устройства
• IVI – развлекательные системы для транспортных средств
• PC – desktops, laptops
• TV – DTV/STB/IPTV
• Wearables – носимые устройства (например, Samsung Gear 2)
• …
История Tizen
8
История релизов Tizen Mobile Profile
9
Web-centric
platform
- Поддержка HTML5
- Tizen Device Web
API
- Web UI framework
(основана на
jQueryMobile
Extension)
Tizen 1.0 Web/Native dual
framework
- Native API
- Униф. SDK для Web &
native
- Web Runtime – WebKit2
- Web Audio, HTML Media
Capture
- HTML Drag & Drop,
Clipboard
Tizen 2.0 Hybrid Web/Native,
Enhanced Security, and
Optimized Perf.
- Hybrid Web и native app
- Content security policy
- Trusted inter-app sharing
- Account management
- QR code and image
recognition
- Systemd replacing init
daemon
Tizen 2.1
Апр. 2012 Фев. 2013 Май 2013
Commercial Ready
w/ Enhanced UX
- H/W Menu & Back
key
- Better Font Legibility
- H/W LED Notification
- Integration of Apps w/
Contact
- Native API for Secure
Element
- UI Customizer
- Live Web App. Editing
Tizen 2.2
Июль 2013
Minor Update
- Privacy menu in
settings
- Applications
installed in SD
cards
Add-on SDK
- Accelerated
computing
(OpenCL &
WebCL)
- Bada app
migration
- In app purchase
Tizen 2.2.1
Нояб.2013
- Multi-user
- 64 bit architecture
- 3D UI Framework
- Wayland based compositor
Tizen 3.x
Q3 2014
Архитектура
(Mobile Profile)
Архитектура Tizen
11
Архитектура Tizen. HW Adaptation Layer
12
Архитектура Tizen. Компоненты системы
13
Архитектура Tizen. Безопастность
14
• SMACK - Simple Mandatory Access Control Kernel. Обеспечивает защиту системы
(системных демонов, файлов, сетевых интерфейсов, IPC …).
• SMACK обеспечивает изоляцию приложений (sandboxing) от
несанкционированного доступа.
Архитектура Tizen. Web
15
Архитектура Tizen. WRT
16
Обеспечивает:
• жизненный цикл Web-приложения
• выполнение Web-приложения
• доступ к ресурсам устройства из JS
• контроль доступа Web-приложения
Архитектура Tizen. Графика
17
EFL – Enlightenment Foundation Libraries
Набор графических библиотек для построения графических
приложений.
Разработка
приложений для
Разработка приложений для Tizen. Типы приложений
19
• Нативные приложения
• Web-приложения
• Гибридные приложения
• Системные приложения
Tizen Store
Разработка приложений для Tizen. Native Framework
20
Разработка приложений для Tizen. Пространства имён
21
App Media Telephony
Base Messaging Text
Content Net Ui
Graphics Security Uix
Io Shell Web
Locales Social
Locations System
Разработка приложений для Tizen. Жизненный цикл
нативного приложения
22
Разработка приложений для Tizen. Web Framework
23
Разработка приложений для Tizen. Жизненный цикл
web-приложения
24
Разработка приложений для Tizen. Web, нативные и
гибридные
25
Web Hybrid Native
Скорость и стоимость разработки + +/- -
Портируемость + +/- -
Производительность - + +
Полный доступ к устройству - + +
Формат установочного файла .wgt .wgt* .tpk
Разработка приложений для Tizen. Концепция
гибридного приложения
26
Native Service Web App
• Message Port
• Websocket
• JavaScriptBridge plugin
“Bridge”
Разработка приложений для Tizen. Системные
приложения
27
• Исчерпывающие возможности для доступа к устройству
• Исчерпывающая производительность
• Обычно разрабатываются OEM или разработчиками
платформы
• Не гарантируется обратная совместимость
• Не публикуется в Tizen Store
• Возможно добавить в официальные репозитории через
формальную процедуру
Разработка приложений для Tizen. Tizen SDK
28
• 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
Разработка приложений для Tizen. Tizen SDK+
29
Tizen Native Tizen Web
• Компиляторы GCC 4.5, LLVM 3.1
• C++ ANSI ISO 14882 2003
• Glibc, libstdc++, libxml2
• OpenGL® ES, OpenAL и OpenMP®
• Code Editor, Project Explorer, Connection
Explorer
• UI Builder (WYSIWYG)
• UI Effect Builder
• Отладчик (GDB)
• Инструменты для профилирования
(OProfile, Valgrind, Dynamic Analyzer)
• Device Emulator (QEMU-based)
• Event Injector
• Unit-Test Tool
• CLI
• W3C/HTML5, CSS3, JavaScript
• Code Editor, Project Explorer, Connection
Explorer
• Web UI Framework
• Web UI Builder (WYSIWYG)
• jQuery
• jQuery Mobile
• Web Simulator
• Device Emulator
• Event Injector
• CLI
Разработка приложений для Tizen. Сторонние
инструменты
30
https://www.tizen.org/about/partner-tools • Appcelerator
– Более 60 000 мобильных приложений
– Более 175 млн. устройств
– http://www.appcelerator.com/titanium/
• Intel 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/
Разработка игр для Tizen
31
https://www.tizen.org/about/partner-tools
• Project Anarchy by Havok
– Игровой движок на C++
– Havok Vision 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/
Разработка платформы. Роли в проекте
32
Разработка платформы. Права и обязанности
участников
33
Участник Описание деятельности Права и обязанности
Architect Наблюдение, советы,
направление развития
Прогресс в целом
Разработка технических целей
Maintainer Поддержка пакетов и
обеспечение прогресса
Внесение изменений в пакет
Отвечает за качество пакета
Участие в release
Reviewer Принятие решений
относительно изменений
Решения относительно изменений
Участие в review
Участие в release
Release Engineer Создание предрелизных и
релизных образов
Создание образов
Smoke test образов
Участие в release
Developer Разработка кода, другой
вклад в разработку
Разработка кода
Внесение изменений
Ревью
Участие в дискуссиях
QA Engineer Обеспечение качества
релиза
Тестирование образов
Разработка платформы. Алгоритм работы
34
Разработка платформы. Подготовка к работе
(пререквизиты)
35
1. Регистрация на www.tizen.org
Разработка платформы. Подготовка к работе
(пререквизиты)
36
2. Войдите на www.tizen.org
Разработка платформы. Подготовка к работе
(пререквизиты)
37
3. Войдя на review.tizen.org, добавьте SSH Public Key (см. подробное описание в “How to
Generate an SSH Key” на текущей странице сайта)
Разработка платформы. Подготовка к работе
(пререквизиты)
38
4. Следуйте подробному описанию https://source.tizen.org/ru/documentation/developer-
guide/environment-setup) – п.1.2. Убедитесь, что у вас есть доступ по ssh:
Разработка платформы. Подготовка к работе
(пререквизиты)
39
5. Сконфигурируйте Git (https://source.tizen.org/ru/documentation/developer-
guide/environment-setup) – п.1.3). Убедитесь, что Git настроен должным образом:
Разработка платформы. Как изменения становятся
частью проекта Tizen
40
Основные понятия
1. Change – изменения, которые будут приняты в случае
положительного решения. Для каждого Change есть свой
уникальный ChangeId
2. Commit – изменения, входящие в Change (термин Git’а)
3. Patch Set – изменения, входящие в Change (термин Gerrit’а)
Patch Set это Commit отправленный на ревью и верификацию.
Change может включать один или несколько Patch Set’ов, решение о
принятии относится к последнему из них.
Разработка платформы. Как изменения становятся
частью проекта Tizen
41
Основные критерии при принятии изменений (Change)
Объективные/Технические
• это компилируется?
• нет ли ошибок в изменении (Change)?
• это изменение (Change) делает то, о чём заявляется?
• изменение (Change) следует правилам кодирования?
• изменение (Change) вносится в нужную ветку Tizen?
Субъективные
• изменение (Change) в духе идеологии TSG, архитектора,
мейнтейнера?
• добавляет ли изменение (Change) риск нестабильности?
• данное решение наилучшее?
• изменение (Change) сделано в подходящее время?
Разработка платформы. Как изменения становятся
частью проекта Tizen
42
Для положительного решения о принятии изменения (Change) код должен быть проверен
(поле Verified) и просмотрен кем-то из ревьюеров (+2 в поле Code-Review). После
этого автоматически произойдёт merge-процесс посланных изменений (Change). Об
этом факте будет послано уведомление (письмо). Пример:
Разработка платформы. Как изменения становятся
частью проекта Tizen
43
1. Практически работа с проектом Tizen заключается во внесении
изменений (Change) - одного или нескольких.
2. Каждое изменение (Change) включается в Tizen проект при
положительном принятии решения о его включении. Это решение
основано на верификации (поле Verified) и ревью изменения
(Change) (+2 в поле Code-Review).
3. Каждое изменение (Change) вносится посредством
автоматического merge-процесса при удовлетворении условий из
предыдущего пункта.
4. Автоматический merge-процесс осуществляется, если у данного
изменения (Change) нет зависимостей от других изменений
(Change), которые содержат ещё не замердженные родительские
Commit’ы. В противном случае merge-процесс осуществляться не
будет.
Разработка платформы. Работа (шаг за шагом)
44
1. Войдя на review.tizen.org, выберите Projects -> List. В появившемся списке выберете
samples/web/FileManager проект. Нажмите на “SSH” чтобы получить строку для
клонирования проекта:
Разработка платформы. Работа (шаг за шагом)
45
2. Далее клонируйте проект, перейдите в его директорию, посмотрите какие ветки
существуют и переключитесь в нужную вам ветку, например, tizen_2.2:
Разработка платформы. Работа (шаг за шагом)
46
3. Скопируйте commit-msg hook в директорию проекта:
scp –p –P 29418 [email protected]:hooks/commit-msg .git/hooks/
Разработка платформы. Работа (шаг за шагом)
47
4. Работа с кодом проекта:
• cоздайте свою локальную ветку, например, с именем model_improve:
git checkout -b model_improve
• внесите в этой ветке в код свои изменения
• убедитесь, что присутствуют только нужные изменения:
Разработка платформы. Работа (шаг за шагом)
48
4. Работа с кодом проекта (продолжение):
• проверьте какие изменения ещё не добавлены : “git status”
• добавьте свои изменения: “git add js/app.model.js”
• проверьте, что изменения добавлены: “git status”
• выполните команду: “git commit -s”
Разработка платформы. Работа (шаг за шагом)
49
4. Работа с кодом проекта (продолжение):
• убедитесь, что commit содержит
Change-Id и Signed-off-by теги: “git
log”
Разработка платформы. Работа (шаг за шагом)
50
4. Работа с кодом проекта (продолжение):
• отправьте изменения (Commit) командой
git push origin ваша_локальная_ветка:refs/for/удалённая_ветка
пример:
git push origin HEAD:/refs/for/tizen_2.2
Разработка платформы. Работа (шаг за шагом)
51
4. Работа с кодом проекта (продолжение):
• используя ссылку с предыдущего слайда (см. вывод в консоль) можно посмотреть
информацию об изменении (Change, который представляет собой один Patch Set
(Commit)):
Разработка платформы. Работа (шаг за шагом)
52
4. Работа с кодом проекта (продолжение):
• для review-процесса нужно добавить ревьюеров – используя кнопку “Add Reviewer”
(напр. добавив ревьюера через его почтовый адрес)
• после этого можно ожидать review изменений
Разработка платформы. Работа (шаг за шагом)
53
4. Работа с кодом проекта
(продолжение):
• после добавления ревьюера
ему/ей придёт уведомление
(письмо)
Разработка платформы. Работа (шаг за шагом)
54
4. Работа с кодом проекта
(продолжение):
• ревьюер может (например)
высказать замечание
(comments) к этому
изменению (Patch Set), при
этом автору будет выслано
уведомление (письмо) о
факте произведённых
ревьюером действий
Разработка платформы. Работа (шаг за шагом)
55
4. Работа с кодом проекта (продолжение):
• более подробную информацию (комментарии) можно посмотреть, пройдя по ссылке,
относящейся к данному изменению (Change)
Разработка платформы. Работа (шаг за шагом)
56
4. Работа с кодом проекта (продолжение):
• кликнув там, где оставлен комментарий, можно увидеть его содержимое
Разработка платформы. Работа (шаг за шагом)
57
4. Работа с кодом проекта (продолжение):
• вносим исправления согласно комментарию и отправляем новые изменения
(Commit)
Разработка платформы. Работа (шаг за шагом)
58
4. Работа с кодом проекта (продолжение):
• пройдя по ссылке, относящейся к данному изменению (Change) можно увидеть то,
что было недавно отправлено (Patch Set 2)
Разработка платформы. Работа (шаг за шагом)
59
4. Работа с кодом проекта (продолжение):
• при этом всем ревьюрам (которые были добавлены ранее) придёт уведомление
(письмо)
Разработка платформы. Работа (шаг за шагом)
60
4. Работа с кодом проекта (продолжение):
• ревьюер может посмотреть разницу в коде – сравнив то, что стало, с тем, что было
(Patch Set 1 и Patch Set 2)
Разработка платформы. Работа (шаг за шагом)
61
4. Работа с кодом проекта (продолжение):
• удовлетворившись правкой, ревьюер может сделать +1 к изменению (Change) –
после этого автору придёт уведомление об этом (письмо)
Разработка платформы. Работа (шаг за шагом)
62
4. Работа с кодом проекта (продолжение):
• пройдя по ссылке, относящейся к данному изменению (Change), можно увидеть в
Code-Review +1. Аналогично, в Code-Review может быть поставлено +2
Разработка платформы. Работа (шаг за шагом)
63
4. Работа с кодом проекта (продолжение):
• далее данное изменение (Change) будет ожидать верификации (поле Verified) и
одобрения (+2 в поле Code-Review)
О том, что произойдет дальше (автоматический merge-процесс) уже было рассказано
выше, при этом работу по внесению изменений в проект Tizen можно считать
успешно законченной.
Разработка платформы. Что делать в случае неуспеха
(непринятии изменений)?
64
Возможные варианты:
1. в процессе верификации выяснилось, что код не работает (будет
отметка в поле Verified)
возможные решения:
• сделать так чтобы он работал
2. код проверен и работает, но что-то не устраивает - есть замечания
возможные решения:
• исправить код согласно замечаниям
3. сделан reject (-2 в поле Code-Review) – изменение не нужно:
возможное решение:
• написать в рассылке обоснование, что это изменение нужно –
возможно будет принято положительное решение
Официальные ресурсы
65
Основной сайт:
https://www.tizen.org
Для разработчиков:
https://www.developer.tizen.org
Исходный код:
https://www.source.tizen.org
Сообщения об ошибках:
https://www.bugs.tizen.org
Выводы
66
• Tizen – универсальная операционная система с открытым
исходным кодом на основе ядра Linux
• Tizen разрабатывается под покровительством Linux Foundation
• Компоненты, входящие в состав Tizen, обеспечивают высокую
производительность и безопасность
• Tizen SDK предлагает для разработчика полный набор
необходимых инструментов для разработки приложений с
помощью технологий HTML5 и/или C/C++
• Поддержка со стороны компаний-партнёров Tizen Association и
сообщества помогают быстро решать возникающие проблемы
Информация и поддержка
67
• Сайты для разработчиков
– 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
Спасибо за
внимание!
Ренат Няжеметдинов
http://www.samsung.com/ru/samsungdev/