Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Разработка мобильных приложений в Embarcadero FireMonkey (FMX 6)

Anna | 24.06.2014 | нет комментариев

Никому не нравится писать один и тот же код несколько раз, но именно это и доводится делать, если мобильное приложение должно быть реализовано для нескольких платформ сразу. Неприятно, что программистам компании, в всяком случае, требуются использовать разные инструменты, навыки и подходы. Разумеется, появляется желание, Дабы, перенося приложение, как минимум, не доводилось менять язык программирования.

Вот и в данный раз, думая о трудностях разработки приложений для мобильных, мы не устояли перед соблазном примерить на себя древнюю Русскую мечту, и, аналогично герою сказки «По щучьему веленью», покататься на печи. Забегая вперед, скажем, что «печь» поехала, правда и с некоторым скрипом.

Выходит, как вестимо, существует несколько подходов, применяемых в кросс-платформенной разработке мобильных приложений. Всякое из этих решений имеет свои недочеты, и, допустимо, сравнительный обзор разных подходов мы выскажем в одной из следующих публикаций. Тут же речь пойдёт лишь об одном таком инструменте, тот, что, как нам кажется, несколько обойдён вниманием аудитории, правда и владеет рядом уникальных особенностей.

FireMonkey — это продукт небезызвестной компании Embarcadero. FireMonkey входит в состав среды разработки RAD Studio. Лежащий в его основе движок FMX был когда-то разработан нашим соотечественником, и представляет собой схожий на Flash либо WPF, кросс-платформенный фреймворк для построения пользовательских интерфейсов. При этом, как и упомянутые продукты, FMX использует векторную графику и аппаратную акселерацию. Продукт возник каждого несколько лет назад, но за это время вышло теснее 5 обновлений. Хочется верить, что продукт не постигнет участь уныло знаменитого Delphi .NET.

Приложения компилируется напрямую в машинный код, и это является одной из основных отличительных особенностей рассматриваемого решения. В связи с этими восхитительным обстоятельством, Embarcadero, в теории, обещает нам всеобщую продуктивность на ярусе нативных приложений. Будучи встроенным в Delphi и в С Builder, FireMonkey разрешает реализовывать логику приложений на Pascal и C . Один и тот же код приложения FireMonkey (FM) может быть скомпилирован для работы в Windows, iOS и Android. Нас привлекла вероятность вести разработку на C , так как в штате компании имелось огромное число программистов по этому направлению. Следственно для проверки работоспособности был установлена именно C Builder версия RAD Studio XE6, правда редакция Delphi не должна отличаться ничем, помимо используемого языка программирования.

Сборка приложений

Имея за своей спиной безумное прошлое, связанное с созданием компиляторов, изготовитель снарядил FireMonkey нативными компиляторами С для x86 и ARMv7. Это разрешает исполнять компиляцию непринужденно на компьютере, где запущена среда разработки. Именно присутствие собственных компиляторов и дает нам вероятность программировать на C либо даже Pascal, получая нужный машинный код ARM на выходе. Впрочем для сборки приложения (link), подписывания, запуска на устройствах и отладки по-бывшему применяется подлинный инструментарий из средств разработки (SDK) мобильных платформ. Таким образом, перед началом работы вам всё равно понадобится исполнить следующие действия:

iOS Android
Иметь Mac
Зарегистрироваться в iOS Developer Program Зарегистрироваться на сайте Android Developer
Получить сертификаты (developer, provisioning) Сгенерировать ключ для подписи приложений
Скачать и установить iOS SDK Скачать и установить Android SDK и NDK
Скачать и установить PAServer на Mac
Настроить соединение между RAD Studio и PAServer

От того что и RAD Studio и инструментарий Android работают на PC, то для разработки под Android требуется несколько поменьше телодвижений, чем для iOS. Для сборки iOS приложений требуется Mac OS (так как только для неё Apple выпускает SDK). Таким образом, если разработка приложения проходит на PC, они обязаны как-то связываться. Из приведенный ниже диаграммы видно, как при помощи поставляемого Embarcadero PAServer (Platform Assistant Server) осуществляется сборка приложений iOS через PC:

Пример

В рамках пробы FireMonkey мы разработали примитивное приложение (на ярусе Hello world), на примере которого хотелось проверить работоспособность предлагаемой спецтехнологии.

Ниже приведен скриншот версии этого приложения для Windows и маленький видеоролик, Дабы дозволено было увидеть его нехитрую работу в динамике:

image

Наше приложение примерно не содержит кода. Тем не менее, расскажем, что именно мы делали.

В данном случае нас волновала мутация пользовательского интерфейса на различных платформах, а также продуктивность, но в «житейском» её понимании. То есть пользователю значимо не число операций с плавающей точкой в секунду, а насколько мягко и стремительно откликается приложение на его действия.

Приложение состоит из нескольких стандартных элементов управления и содержит пару обработчиков действий пользователя. В верхней части экрана расположена «крутилка», двигая которую, дозволено поворачивать картинку слева. Эта часть теста была необходима для проверки способности FMX к рисованию двухмерной графики, вернее выполнения растровых операций.

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

Обработчик поворота колеса:

//---------------------------------------------------------------------------
void __fastcall TForm1::DialAngleChange(TObject *Sender)
{
	// Every time the angle dialer is spinned, assign
	// its current value to the Image control...
	imgLogo->RotationAngle = 360 - DialAngle->Value;

	// The progress bar will get updated with a normalized angle value
	pbAngle->Value = (int)fabs(DialAngle->Value)%360;
}
//---------------------------------------------------------------------------

Как видно, это обыкновенный C , но немножко «запачканный» достоянием Delphi.

Ниже расположена традиционная кнопка (которая, однако, не так уж и схожа на кнопку) со дальнейшим HW обработчиком:

//---------------------------------------------------------------------------
void __fastcall TForm1::btnHelloClick(TObject *Sender)
{
	// A simple HW assignment
	btnHello->Text = "Hello world!";
}
//---------------------------------------------------------------------------

Правее виднеется поле для выбора даты (DateTimePicker). Нас волновал, раньше каждого, его внешний вид на мобильных ОС: будет ли в всяком случае использован нативный элемент управления либо что-то рисованное. По этой же причине ниже следует ползунок и переключатель ВКЛ./ВЫКЛ. Данный переключатель, впрочем, приобрел еще одну функцию: он включает один из стандартных визуальных результатов FMX (радиальное размытие): нам хотелось посмотреть, рисует ли FMX элементы управления сам либо делегирует эту работу мобильной ОС. Ниже мы еще возвратимся к этому вопросу, так как итог оказался не явственным.

В самом низу помещена таблица с двумя колонками. Таблица имеет ясные черты desktop приложения, правда и с инерционной прокруткой. Нам хотелось посмотреть: каково будет ей пользоваться на мобильном телефоне. Таблица заполняется на старте приложения, легко, Дабы глазу было за что цепляться:

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	// Initialize the string grid with a bit of texts
	// Define the number of items
	gdDemo->RowCount = 1000;

	// Generate the texts for every Row and Column
	for(int r = 0; r < gdDemo->RowCount; r  )
	{
		gdDemo->Cells[0][r] = "iResearchFX";
		gdDemo->Cells[1][r] = IntToStr(r 1);
	}
}
//---------------------------------------------------------------------------

Компиляция


Компиляция проходит крайне неспешно — по своему обыкновению C Builder делает это как-то натужно. Всё же, длинные годы не сделали их компилятор C ни чуть не стремительней.

Пришла пора увидеть то же самое приложение в варианте для мобильных устройств. Для этого не необходимо менять код либо пользовательский интерфейс вашего приложения. Довольно изменить некоторые настройки в плане, которые, как словно, и создавались для того, Дабы «легким движением» дозволено было поменять целевую платформу.

Переключения платформы осуществляется без специальных усилий — в IDE данный аспект интерфейса сделан нарочито и бескомпромиссно. Вы обязаны предпочесть: Debug либо Release компиляцию, целевую платформу, симулятор либо устройство, и отдельно пометить осуществляется ли сборка для внутренних нужд либо для публикации. В последнем случае от вас понадобятся сертификаты для подписывания.Сертификаты Android, если у вас их еще нет, вам здесь же вежливо предложат генерировать прямо из среды разработки; ну, а iOS профили обязаны стоять на том Mac, где будет выполняться заключительный этап сборки.

Легко видеть, что в разделе Android перечислены все симуляторы, настроенные в Android SDK, а так же все подключенные устройства.

В разделе iOS опции в точности повторяют комплект из XCode — это и не изумительно, рассматривая, что сборка и запуск симулятора будут исполнены на удаленной машине Mac OS.



Слева показано, как выглядит приложения на основных мобильных платформах.

Как несложно подметить — и это приятно — внешний вид примерно не изменился, вернее, наоборот: приложение неисповедимым образом изменилось, но выглядит оно сейчас верно так же, как если бы мы делали его интерфейс с нуля для всякой из платформ. В этом и состоит тот соблазн, ради которого мы хотели проверить FMX. Походит на фурор от первого применения Qt!

Видно, что это по-бывшему то же самое приложение, но все элементы управления сменились на «родные» для всякой из платформ. Именно это, по нашему суждению, и дозволено было бы назвать достоверно кросс-платформенной разработкой GUI приложений.

Мобильное приложение теснее готово! Предлагаем вам посмотреть на его работу в живую на примере экранного видео, сделанного на физическом Android устройстве (HTC One). Видео примерно одинаковы, мы сделали два ролика для статистики.

На видео невидимы некоторые аспекты работы нашего приложения.

  1. Время запуска. Считается, что все приложения на Android-e запускаются не дюже стремительно, если мы говорим о «холодном» запуске. Тут же восхитительно видно, что мы теряем около 2 секунд на старте (черный экран в самом начале видео). Много это либо нет — решать Вам, но, по нашему суждению, это крепко зависит от типа приложения.
  2. Скорость работы. Здесь специальных нареканий нет — интерфейс работает абсолютно хорошо.
  3. Элементы управления. Все элементы заменены на нативные и производят абсолютно Андройдовское ощущение.
  4. Grid. Выглядит увлекательно для мобильной платформы и, абсолютно, рабочий — есть даже inplace редактирование

 

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB