20
Marmalade SDK Что под капотом?

CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Marmalade SDKЧто под капотом?

Page 2: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Marmalade SDK открытый и гибкий

Черный ящик

Альтернативные движки

Доступны плагины с закрытым кодом

Marmalade System

Marmalade

Доступны плагины с открытым кодом

Модули Marmalade

Модули с открытым кодом

Page 3: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Программный стек Marmalade: Устройства

Типичное место, откуда обычно разработчик без Marmalade SDK начинает строить приложениеВсе устрйства/ОС разные и требуют от разработчика редизайна приложения для каждой конкретной платформы

ОСДрайверыOpenGL ESУстройство

Page 4: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Marmalade Система

Быстрый и эффективный доступ к API ОС, управление памятью и графической подсистемой устройства.Одинаковый набор API на всех поддерживаемых платформах

Графика Кросс платформ. APIMarmaladeСистема

ОСДрайверыOpenGL ESУстройство

Page 5: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Стандартные C/C++ библиотеки

Подавляющее большинство существующего С/С++ кода портируется сразу, с минимальными изменениями или без них вообще

C/C++ стандартные библиотеки

Графика Кросс платформ. API

ОСДрайверыOpenGL ESУстройство

Графика Кросс платформ. APIMarmaladeСистема

Page 6: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Модули Marmalade Studio

Marmalade Studio предоставляет стандартный набор модулей для быстрой разработки приложений

“Marmalade Studio”

C/C++ стандартные библиотеки

ОСДрайверыOpenGL ESУстройство

Графика Кросс платформ. APIMarmaladeСистема

Page 7: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Интеграция модулей

Выбирайте среди разнообразия сторонних модулей которые работают с Marmalade прямо «из коробки»

Другие модули“Marmalade Studio”

C/C++ стандартные библиотеки

ОСДрайверыOpenGL ESУстройство

Графика Кросс платформ. APIMarmaladeСистема

Page 8: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

РасширенияПолучайте доступ к платформенно зависимым функциям и коду, используя расширения MarmaladeВыбирайте из набора предустановленных расширений или создавайте свои собственные используя EDK

Платформ. расширения

Другие модули“Marmalade Studio”

C/C++ стандартные библиотеки

ОСДрайверыOpenGL ESУстройство

Графика Кросс платформ. APIMarmaladeСистема

Page 9: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Ваше приложениеИспользовать модули Marmalade Studio, API партнерских проектов или получить доступ к низкоуровневым APIs напрямую – ваш выбор

Платформ. расширения

Код вашего приложения

Другие модули“Marmalade Studio”

C/C++ стандартные библиотеки

ОСДрайверыOpenGL ESУстройство

Графика Кросс платформ. APIMarmaladeСистема

Page 10: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Концепции Marmalade: загрузчикГрафикаЗагрузчик Кросс-платформенные API

Платформенно зависимый загрузчик который компонуется с вашим приложением во время упаковки, чтобы создать платформенно зависимый установочный пакет

Хранит платформенно зависимые реализации системы Marmalade для стандартного набора низкоуровневых API

Приложения получают доступ к API напрямую или через набор высокоуровневых модулей

Совсем крошечный дополнительный объем к вашему приложению, обычно около 400kb

Page 11: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Концепции Marmalade: бинарник приложения

Кросс-платформенный, ОС-независимый пакетСодержит ваш код и дополнительные модулиКомпилируется в нативные инструкции CPUНеиспользуемый функционал выбрасывается. Приложение зря не раздуваетсяПодтверждает, что 97% кода приложения – это идентичные инструкции CPU на всех устройствахКомпонуется с платформенно зависимым загрузчиком на этапе упаковки для создания готового пакета приложенияMarmalade поддерживает сборку под ARM, x86 или MIPS

Бинарник приложения (s3e/s86 файл)

Код вашего приложения

Другие модули“Marmalade Studio”

C/C++ std lib

Page 12: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Концепции Marmalade: Упаковка

Нативное приложение(.ipa .apk .bar etc.)

Ваши ресурсы

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

Бинарник приложения (s3e/s86 файл)

Код вашего приложения

Другие модули“Marmalade Studio”

C/C++ std lib

Платформ. расширенияГрафика Кросс платформ. API

MarmaladeСистема

Page 13: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Упаковка проекта в Marmalade SDK

iOS Loader

iOS App

GCC

.mkb проект

бинарник

SCons

Android App

Android Loader

Симулятор

BlackBerry App

Загрузчик BlackBerry

Инструмент упаковки

MKB

IDE

MKB – Файл проекта Marmalade

Система MKB – генерирует рабочий проект для IDE из MKB файлов

IDE – Visual Studio или Xcode

Scons – система сборки проектов без участия IDE

GCC – Типичный компилятор для сборки под ARM, другие компиляторы используются для прочих архитектур

Бинарник – собранное приложение, может запускаться в симуляторе или упаковываться для устройства

Page 14: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Ваше приложение: структура

Операционная система

Платформенная реализация

Стандартные API

Код приложения

Page 15: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

C++ библиотеки

LoadImage(const char* path)

libpng

Platform fopen

LoadImage(const char* path)

libpng

Custom fopen

Platform fopen

Проблема: путь к файлу должен меняться в зависимости от платформы

Page 16: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Подмена функция в std lib

LoadImage

App Code

fopennewlib

_openglue

fopenOS

Поддержка 19 системных вызовов_exitcloseenvironexecveforkfstat

getpidisattykilllinklseekopen

readsbrkstattimesunlinkwait

write

Ошибка линковщика: символ ‘fopen’ определен несколько раз

Page 17: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Прелинковка библиотек

Перемещаемая линковка • ld –r

Контроль видимости символов• -B reduce

Вторая линковка к системным библиотекам

prelink

link

Исполнимый файл

Код приложения libpng

newlib

Библиотеки приложения

Платформенные библиотеки

Системные бибилотеки

Page 18: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Отделяем бинарник

• Бинарник приложения полностью платформенно независим

• Подключается к плаформенным библиотекам на этапе выполнения

• Виртуальное окружение без дополнительных затрат производительности

Загрузчик

Динамическая подгрузка

кода

Библиотека приложения

Page 19: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Динамическая загрузка кода

Бинарник формата ELF (Executable and Linkable Format)

Global offset table

Procedure linkage table

.dysym .dynstr

Page 20: CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?

Richer apps are

Marmalade200 St. John Street,London, EC1V 4RNUnited Kingdome: [email protected]

www.madewithmarmalade.com