Введение
Цель статьи - познакомить читателя, знакомого с языками С/С++, с одним из средств разработки для мобильных платформ - MoSync SDK.
На данный момент доступна масса фреймворков, позволяющих разрабатывать приложения для мобильных платформ. Для подавляющего большинства из них основными языками являются Java или связка HTML + CSS + JavaScript. Использование языков С/С++ в сфере мобильной разработки в некотором смысле экзотика. Однако некоторые средства позволяют создать такие мобильные приложения. Так что если у разработчика есть знания С/С++ и большое желание создать своё собственное мобильное приложение, существует возможность поэкспериментировать на новом поле.
Введение в MoSync
MoSync - это средство разработки для мобильных платформ. Состоит из двух независимых продуктов - MoSync SDK (C/C++) и MoSync Reload (HTML + CSS + JavaScript). В данной статье основное внимание уделено первому продукту.
Отличительные особенности данного фреймворка:
-
Обилие поддерживаемых мобильных платформ
На сегодняшний день заявлено о поддержке следующих платформ: Android, Blackberry, iOS, JavaME, Moblin, Symbian, Windows Mobile, Windows Phone. В лучшем случае пересборка под другую платформу происходит без изменения исходного кода приложения. Но так бывает не всегда, конечно. -
Свободная лицензия
Для личного использования MoSync бесплатен. Если есть желание продавать создаваемые продукты, можно использовать для них GPLv2 лицензию, или придётся приобретать коммерческую лицензию. -
Подробная документация
Детально описан API продуктов. Кроме того, в наличии масса дополнительной документации: обзоры, установка, примеры кода и приложений. Документация рассчитана на различный уровень подготовки читателя, как новичок, так и искушённый разработчик сможет найти для себя полезное в этой хорошо структурированной библиотеке. Отдельного упоминания заслуживает раздел "Руководства разработчика" ("Coding guides"). В нём представлено большое количество руководств, связанных со спецификой реализации различных аспектов мобильных платформ средствами MoSync: камера, bluetooth, gps, карты, звуки, шрифты, рекламные баннеры и многое другое. -
Активное сообщество разработчиков
Активность проявляется как в частоте обновлений исходного кода на github, так и в частоте сообщений на форуме. Общаться с разработчиками приятно, реагируют оперативно и доброжелательно. -
Открытый исходный код
Кодовая база находится в свободном доступе на github. -
Активная разработка проекта
Последняя версия датируется мартом 2013 года. Обновления установщиков появляются в среднем в течение полугода. -
Низкий порог вхождения
Благодаря обилию документации и примеров приложений для начала работы потребуется минимум усилий.
Относительные недостатки:
-
Отсутствие документации на русском языке
Крайне желательно иметь хотя бы средний уровень технического английского. -
Нет поддержки Linux
Хотя при большом желании можно попробовать собрать части MoSync из исходного кода, на сайте разработчика есть инструкции. - Более узкие возможности по сравнению с нативной разработкой
MoSync SDK
MoSync SDK позволяет создать полноценное мобильное приложение с использованием языков C/C++. Актуальная версия 3.2.1 выпущена в марте текущего года. Основная среда разработки основана на Eclipse.
Установка фреймворка весьма проста и подробно освещена в документации на его сайте. Самый быстрый способ начать разработку - импортировать один из примеров приложений и заняться его исследованием. Исходный код примеров стремится быть лаконичным и содержит обстоятельные комментарии, позволяющие понять происходящее.
Возможности
Рассмотрим наиболее востребованные возможности, доступные пользователю MoSync SDK. Для каждой из них приведены названия примеров приложений.
-
Сенсоры
AccelerometerOpenGLES, ScreenOrientation, SensorTest
Поддерживается солидный список сенсоров: акселерометр, гироскоп, датчик положения и т.д. -
Адресная книга
PIMExample
На данный момент работа с адресной книгой устройства находится на начальном уровне разработки. Однако ряд основной функциональности уже реализован: доступ к контактам, добавление, изменение и удаление нового контакта. -
Рекламный API
NativeUIDemo
Позволяет выводить рекламу в мобильном приложении. -
API Покупок
PurchaseExample
Позволяет осуществлять покупки внутри приложения с помощью библиотеки MoSync Purchase C++. -
Звук
MoSound
Различные аспекты работы со звуком: загрузка, воспроизведение, повтор. -
Bluetooth
BluetoothServer, MoTooth
Различные аспекты работы c Bluetooth: создание сервера и клиента, обнаружение устройств, установка соединения. -
Базы данных
DatabaseTest
Пример работы с MoSync Database API. -
Шрифты
DeviceFonts, DeviceFontsNativeUI
Различные способы доступа к шрифтам устройства. -
GPS, карты
HelloMap, Location, MapDemo, NativeUIMap
Определение координат, отображение карт. -
Графика
MoSketch, Stylus
Различные аспекты работы с графикой: фреймбуфер, обрезка, графические примитивы. -
Трёхмерная графика
3DLines, AccelerometerOpenGLES, HelloOpenGLES, GLMobletOpenGLES1/2
Работа с OpenGL ES.
Полный список можно отыскать в разделах документации на сайте разработчика.
Типы проектов
MoSync SDK позволяет создавать несколько типов С/С++ проектов.
Наиболее характерные из них следующие:
-
С Basic project
Проект, основанный на стандартном ANSI C. Содержит один файл с небольшим примером. -
C++ Moblet Project
Проект использует Moblet - объект для событийной модели взаимодействия. -
C NativeUI Project
Содержит цикл обработки событий и использует WidgetAPI для создания виджетов. -
C++ NativeUI Project
Реализует Moblet и использует для создания виджетов NativeUI библиотеку. -
C++ OpenGL Project
Основа для реализации OpenGL проектов.
Пользовательский интерфейс
MoSync SDK позволяет создавать несколько типов пользовательского интерфейса:
-
Widget C API
Сложен в реализации, представляет из себя низкоуровневый программный интерфейс системных вызовов. -
Библиотека MAUI
Приложение выглядит одинаково на всех платформах; работает на старых аппаратах.
-
Библиотека NativeUI
Нативный вид платформы, подходит для современных аппаратов.
Пример пользовательского интерфейса с использованием NativeUI библиотеки для платформ Android и Windows Phone 7.
Кроме того, приложение может иметь вид консольного приложения (что более актуально для аппаратов с физической клавиатурой) или просто выводить двух- или трёхмерную графику.
Эмуляция устройств
MoSync даёт возможность заниматься разработкой или исследованиями даже без физического устройства. Существует два варианта:
- Встроенный эмулятор MoRE. В составе SDK присутствует эмулятор MoRE, позволяющий создавать виртуальное устройство из обширной встроенной базы устройств/платформ. Вещь удобная, так как имеет следующие преимущества:
- интегрирован в среду разработки,
- удобный интерфейс,
- функция мультитач,
- низкое время загрузки.
Существенный недостаток видится в том, что MoRE, в силу архитектурных особенностей, не позволяет запускать приложения, использующие NativeUI библиотеку - основную библиотеку для смартфонов.
- "Родной" эмулятор выбранной платформы. При желании можно использовать Android Emulator и/или iPhone/iOS Simulator. Они устанавливаются и настраиваются отдельно от MoSync, а затем связываются со средой разработки. При выборе платформы и запуске приложения на исполнение будет вызван соответствующий эмулятор. К сожалению, добиться стабильного выполнения приложений в среде Android Emulator'а удаётся не всегда. Судя по всему, это связано с тем, что он довольно требователен к ресурсам компьютера.
Конечно, наиболее надёжным способом получения рабочего приложения является отладка на реальном устройстве. Настройка связи телефона со средой разработки обычно происходит без проблем, приложение загружается на аппарат быстро, всё работает стабильно.
Внутренности MoSync SDK
Магия кросс-платформенной мобильной разработки реализуется внутренним инструментарием MoSync. В общих чертах, процесс выглядит так:
MoSync SDK использует свой собственный вариант широко известного инструмента GCC, который генерирует код промежуточного языка MoSync IL. Результаты работы передаются следующему инструменту - Pipe-Tool. На данном этапе происходит преобразование к одной из форм байт-кода. Полученный байт-код передаётся последней в цепи инструментария MoSync - утилите-упаковщику, которая создаёт пакеты, готовые для установки на устройстве или эмуляторе.
-
GCC
Реализация GCC от MoSync компилирует пользовательский исходный код в промежуточный язык MoSync IL, который содержит различную метаинформацию о приложении. -
Pipe-Tool
Эта утилита комбинирует в себе функции компилятора ресурсов, линкера и оптимизатора кода. Происходит связывание кода MoSync IL с библиотеками MoSync. На выходе получается один из форматов целевой платформы, включая байт-код MoSync, байт-код Java или исходный код C/C++. Также проводится верификация и оптимизация кода, компиляция внешних ресурсов. -
Упаковщик
Цель утилиты - создание пакета, готового к установке на целевой платформе или создание проекта для внешнего инструментария (например, создание Xcode проекта для платформы iOS или Visual Studio проекта для платформы Windows Phone).
Заключение
Таким образом, MoSync SDK представляется разумным выбором для экспериментов С/С++ программистов на мобильных платформах. Он даёт возможность превратить практически любой мобильный телефон в среду исполнения вашего С/С++ кода.
Александр СТРОКОВ
Горячие темы