Upload
anastasia-tsykalyuk
View
1.187
Download
3
Embed Size (px)
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/)
Citation preview
Marmalade SDKPorting of The Existing Projects To All The Multiple Platforms.
Marmalade SDK открытый и гибкий
Черный ящик
Альтернативные движки
Доступны плагины с закрытым кодом
Marmalade System
Marmalade
Доступны плагины с открытым кодом
Модули Marmalade
Модули с открытым кодом
Ваше приложениеИспользовать модули Marmalade Studio, API партнерских проектов или получить доступ к низкоуровневым APIs напрямую – ваш выбор
Платформ. расширения
Код вашего приложения
Другие модули“Marmalade Studio”
C/C++ стандартные библиотеки
ОСДрайверыOpenGL ESУстройство
Графика Кросс платформ. APIMarmaladeСистема
Концепции Marmalade: загрузчикГрафикаЗагрузчик Кросс-платформенные API
Платформенно зависимый загрузчик который компонуется с вашим приложением во время упаковки, чтобы создать платформенно зависимый установочный пакет
Хранит платформенно зависимые реализации системы Marmalade для стандартного набора низкоуровневых API
Приложения получают доступ к API напрямую или через набор высокоуровневых модулей
Совсем крошечный дополнительный объем к вашему приложению, обычно около 400kb
Концепции Marmalade: бинарник приложения
Кросс-платформенный, ОС-независимый пакетСодержит ваш код и дополнительные модулиКомпилируется в нативные инструкции CPUНеиспользуемый функционал выбрасывается. Приложение зря не раздуваетсяПодтверждает, что 97% кода приложения – это идентичные инструкции CPU на всех устройствахКомпонуется с платформенно зависимым загрузчиком на этапе упаковки для создания готового пакета приложенияMarmalade поддерживает сборку под ARM, x86 или MIPS
Бинарник приложения (s3e/s86 файл)
Код вашего приложения
Другие модули“Marmalade Studio”
C/C++ std lib
Концепции Marmalade: Упаковка
Нативное приложение(.ipa .apk .bar etc.)
Ваши ресурсы
Используйте инструмент упаковки чтобы скомпоновать бинарник вашего приложения, ресурсы и платформенно зависимый загрузчик для каждой из целевых платформ
Бинарник приложения (s3e/s86 файл)
Код вашего приложения
Другие модули“Marmalade Studio”
C/C++ std lib
Платформ. расширенияГрафика Кросс платформ. API
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, другие компиляторы используются для прочих архитектур
Бинарник – собранное приложение, может запускаться в симуляторе или упаковываться для устройства
Ваше приложение: структура
C++ библиотеки
LoadImage(const char* path)
libpng
Platform fopen
LoadImage(const char* path)
libpng
Custom fopen
Platform fopen
Проблема: путь к файлу должен меняться в зависимости от платформы
Подмена функция в std lib LoadImage App Cod
e
fopennewlib
_openglue
fopen
OSПоддержка 19 системных вызовов
_exitcloseenvironexecveforkfstat
getpidisattykilllinklseekopen
readsbrkstattimesunlinkwait
write
Ошибка линковщика: символ ‘fopen’ определен несколько раз
Прелинковка библиотек
Перемещаемая линковка • ld –r
Контроль видимости символов• -B reduce
Вторая линковка к системным библиотекам
prelink
link
Исполнимый файл
Код приложения libpng
newlib
Библиотеки приложения
Платформенные
библиотеки
Системные бибилотеки
Отделяем бинарник
• Бинарник приложения полностью платформенно независим
• Подключается к плаформенным библиотекам на этапе выполнения
• Виртуальное окружение без дополнительных затрат производительности
Загрузчик Динамическая подгрузка кода
Библиотека приложения
Richer apps are
Marmalade200 St. John Street,London, EC1V 4RNUnited Kingdome: [email protected]
www.madewithmarmalade.com