Фреймворк Multi-OS Engine — технология Intel, предназначенная для разработки кросс-платформенных мобильных приложений для iOS и Android из-под Windows или OS X. Работая с Multi-OS Engine, ты можешь использовать весь свой опыт разработки на Java для создания iOS-приложений (Android подразумевается по умолчанию). По сути, Multi-OS Engine представляет собой плагин для среды разработки Android Studio. При этом для каждой из платформ на выходе получаются нативные приложения, которые выглядят и взаимодействуют специфическим для определенной операционной системы образом.

 

Intro

В зачаточном виде Multi-OS Engine была представлена летом прошлого года. Почти за год эта технология развилась во вполне сформировавшуюся программную систему и достигла пререлизной версии. Пока она полностью бесплатная, поэтому имеет смысл обратить на нее свое внимание :). Multi-OS Engine входит в пакет инструментов INDE (Integrated Native Developer Experience), который состоит из всевозможных компиляторов, отладчиков, средств профилирования, пакетов разработчика, библиотек и других тулз, помогающих в разработке высокопроизводительных нативных приложений для любой поддерживаемой платформы, где установлен процессор от Intel.


Команда разработки этого фреймворка размещается преимущественно в Москве и Нижнем Новгороде.

Ближайший конкурент Multi-OS Engine — Xamarin, теперь встроенный в Visual Studio для Windows и по-прежнему тусующийся в системе программирования Xamarin Studio в OS X. В конце марта, когда случился Build 2016, Xamarin объявила, что снимает все ограничения со своих бесплатных инструментов на построения приложений, в том числе на их размер. Это также касается интегрированных в Visual Studio (любых версий) инструментов. Совпадение? Не думаю. Несмотря на то что Xamarin также создает нативные приложения для iOS и Android, использует он при этом C#. Ни о каких сравнительных тестах мне пока не известно, поэтому на данный момент все ограничивается субъективным выбором любимого языка и среды разработки.

Multi-OS Engine полностью избавляет от использования Obj-C при разработке приложений для iOS. Это достигается путем генерации связующего Java-кода на основе заголовков Obj-C и C. Кроме того, Multi-OS Engine поддерживает использование Java-аннотаций, а связь Java-кода с нативным посредством библиотеки NatJ избавляет от необходимости вызовов JNI. Вдобавок фреймворк содержит подготовленные jar-файлы для взаимодействия с iOS API. Тем самым он полностью покрывает последний.

 

Подготавливаем среду разработки

Поскольку в Windows нет iOS-симулятора, я буду проводить сегодняшние эксперименты в среде OS X. Однако даже если у тебя нет макинтоша, действия в ОС Windows будут такими же. Кроме того, чтобы построить приложение для iOS из Windows, можно воспользоваться облачным сервисом — смотри об этом на врезке, а я пока перейду к обзору инструментов.

В первую очередь тебе понадобится Android Studio. Плагин Multi-OS Engine поддерживается версиями начиная с 1.2, но мы воспользуемся последней имеющейся в наличии. На момент написания статьи это была 2.1.1. Итак, переходим на сайт Android Studio и качаем последнюю версию пакета. Прежде чем приступить к установке, проверь версию Java SDK, установленную на твоем маке (javac -version в терминале), и, если она ниже 1.8, обнови. Далее двойным щелчком по пакету dmg запусти установку. В появившемся окне перетащи Android Studio в папку Application.

После запуска Android Studio тебе будет предложено провести стандартную настройку студии: скачивание и установка инструментов SDK, Android-платформ и инструментов построения. В общем, все обычно.

Перейдем к установке непосредственно плагина. Его можно скачать со страницы. На ней нажми кнопку Get Multi-OS Engine, заполни форму, указав валидный email, имя, фамилию — по желанию, нажми Submit, на следующей странице выбери свою целевую операционную систему и жми Download Now. В моем случае операционная система OS X, следовательно, установочный пакет для нее я и качаю. В установке плагина также нет ничего сверхъестественного: двойным кликом по файлу m_multi_os_engine-1.0.648 открываем установочный диск, откуда выбираем Multi-OS Engine Installer 1.0.648. Запустится инсталлятор, на первой странице которого надо ввести пароль администратора, потом будет окно приветствия, окно для задания путей к инструментам: JDK, Android SDK, Android Studio, затем подтверждение и, наконец, установка. После этого можно запускать студию и пользоваться средствами плагина.


В случае открытия внешних проектов может понадобиться установить дополнительные SDK. Android Studio проведет установку автоматом. Также Android Studio предложит обновить инструменты Gradle.
 

Разработка простого кросс-платформенного приложения

 

Android-версия

Соберем минимальное кросс-платформенное приложение, чтобы почувствовать принципы работы с Multi-OS Engine. По сути, кросс-платформенное приложение для iOS и Android состоит из платформозависимых модулей для конкретной операционной системы и общего кода, часть которого может составлять 60%. Остальные 40% приходятся на пользовательский интерфейс, который по определению специфичен для каждой операционной системы.

Пусть наше минимальное приложение имеет общий модуль на Java, который используется в двух смежных проектах Multi-OS Engine на Android и на iOS. Создай новый Android-проект в Android Studio. В мастере на втором шаге выбери подходящую версию SDK. Для тестирования на реальном девайсе я возьму API 19: Android 4.4 (KitKat), поскольку Android-эмуляторы на OS X работают крайне медленно. А на странице выбора добавляемой активности укажи Empty Activity.

Теперь перейдем к созданию модуля общей функциональности. С помощью контекстного меню (на iOS-модуле) New → Module открой окно Create New Module, там выбери пиктограмму Java Library. На следующем шаге задай имя библиотеки и Java-класса, в моем случае это сommon и commonLogic. После создания дополнительного модуля позволь системе Gradle синхронизироваться. Сейчас надо написать функциональность, которая будет одинаково служить обоим приложениям, то есть общую функциональность. Для примера пусть возвращает строку. Открой файл с кодом (в моем случае: common → java → com.example → commonLogic). Там имеется класс commonLogic, вставь в него следующий код:

private String line;
public commonLogic(){
   line = "Xakep";
}
public String getLine(){
   return line;
}

Все очень просто, объявляем переменную, в конструкторе инициализируем ее, в методе getLine возвращаем ее значение.

Теперь в Android-приложение просто добавим кнопку, в результате клика по которой обратимся к модулю общего кода и выведем его на экран девайса. Открой activity_main.xml в режиме дизайнера. В визуальном редакторе добавь кнопку, перейди в редактор кода (MainActivity.java), в раздел импортирования добавь

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


2 комментария

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…