Ivan Beliy, Software Engineer, Marmalade

13
Marmalade SDK Porting of The Existing Projects To All The Multiple Platforms.

description

Porting of The Existing Projects To All The Multiple Platforms. A Real Time Show -- Ivan Beliy, Software Engineer, Marmalade (The White Nights: Mobile Games Conference http://www.wnconf.com/)

Transcript of Ivan Beliy, Software Engineer, Marmalade

Page 1: Ivan Beliy, Software Engineer, Marmalade

Marmalade SDKPorting of The Existing Projects To All The Multiple Platforms.

Page 2: Ivan Beliy, Software Engineer, Marmalade

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

Черный ящик

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

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

Marmalade System

Marmalade

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

Модули Marmalade

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

Page 3: Ivan Beliy, Software Engineer, Marmalade

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

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

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

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

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

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

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

Page 4: Ivan Beliy, Software Engineer, Marmalade

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

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

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

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

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

Page 5: Ivan Beliy, Software Engineer, Marmalade

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

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

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

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

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

C/C++ std lib

Page 6: Ivan Beliy, Software Engineer, Marmalade

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

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

Ваши ресурсы

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

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

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

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

C/C++ std lib

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

MarmaladeСистема

Page 7: Ivan Beliy, Software Engineer, Marmalade

Развертывание проекта в 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 8: Ivan Beliy, Software Engineer, Marmalade

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

Page 9: Ivan Beliy, Software Engineer, Marmalade

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

LoadImage(const char* path)

libpng

Platform fopen

LoadImage(const char* path)

libpng

Custom fopen

Platform fopen

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

Page 10: Ivan Beliy, Software Engineer, Marmalade

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

e

fopennewlib

_openglue

fopen

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

_exitcloseenvironexecveforkfstat

getpidisattykilllinklseekopen

readsbrkstattimesunlinkwait

write

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

Page 11: Ivan Beliy, Software Engineer, Marmalade

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

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

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

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

prelink

link

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

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

newlib

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

Платформенные

библиотеки

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

Page 12: Ivan Beliy, Software Engineer, Marmalade

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

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

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

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

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

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

Page 13: Ivan Beliy, Software Engineer, Marmalade

Richer apps are

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

www.madewithmarmalade.com