Программирование делфи под андроид

Разработка кроссплатформенных мобильных приложений в Delphi #1

Как вы, наверное, знаете, в сентябре этого года компания Embarcadero Technologies представила очередной релиз RAD Studio, набора средств разработки, включающих в себя Delphi, C++ Builder, HTML5 Builder и ряд сопутствующих продуктов. Основное новшество RAD Studio XE5 состоит в том, что с помощью Delphi стало возможным вести разработку нативных приложений для Android – самой популярной на текущий момент мобильной платформы.

Предыдущие версии Delphi уже поддерживали разработку для Mac OS (XE2, XE3, XE4) и для iOS (XE4). Поэтому сейчас мы не говорим о том, что кроссплатформенная разработка стала «изюминкой» новой версии Delphi. Однако, по отношению к разработчикам приложений, Android по-настоящему демократичная система. Здесь не требуется ни дорогостоящего оборудования (как в случае с iOS), ни покупки сертификатов разработчика (возможность публиковать приложения в GooglePlay стоит всего $25, возможность отладки на своем Android устройстве абсолютно бесплатна).

Таким образом, если вы имеете некоторые навыки работы в Delphi, то именно сейчас у вас появилась прекрасная возможность попробовать себя в мобильной разработке.

Говоря о Delphi, следует упомянуть и C++ Builder. Обычно оба эти продукта развиваются параллельно. Однако, на этот раз Delphi, выражаясь спортивным языком, «немного вырвался вперед» и пользователям C++ Builder приходится некоторое время ожидать пока их средство разработки «подтянется к лидеру».

Многие Delphi разработчики со стажем ассоциируют Delphi с VCL – мощной расширяемой библиотекой классов, предназначенных для создания широчайшего спектра приложений для Windows. Однако, как вы знаете, или успели догадаться, для создания кроссплатформенных приложений используется не VCL, а платформа приложений FM, ранее известная как FireMonkey.

С точки зрения IDE FM, это, прежде всего, новая библиотека визуальных классов (элементов управления). С ее помощью можно создавать качественные пользовательские интерфейсы практически для любых видов программ. При этом среди прочего «в коробке» поставляются также и объекты для работы с 3D графикой, что позволяет задействовать FM для решения целого ряда специфических задач, таких как моделирование физических процессов, создание наглядных учебных пособий и т.д. Многие из компонентов, представленных в FM, имеют свои VCL аналоги. Однако, далеко не все.

В отличие от VCL, FM является «абстрактной» прикладной платформой. Ранее визуальные библиотеки классов обрабатывали соответствующие элементы операционной системы. В VCL, например, компонент «TButton» является оболочкой элемента управления Windows Button (кнопка). Вместо этого, в FireMonkey появилось абстрактное понятие кнопки, к которой могут применяться различные стили, для того чтобы она выглядела нативной под различными платформами, или использовала полностью настраиваемый стиль пользовательского интерфейса.

В то время, как другие библиотеки абстрагируют пользовательский интерфейс, FM привязывается непосредственно к нативной графической библиотеке, предлагая наилучшее решение с точки зрения использования GPU на целевой платформе.

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

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

На сегодняшний день платформа FM поддерживает следующие операционные системы: Windows (Win32 и Win64), OSX, iOS и Android.

Читайте также:  Мастер очисток для андроид

Для разработки мобильных приложений (для iOS и Android) в Delphi используется так называемый модульный компилятор LLVM. В контексте кроссплатформенной разработки это дает неоспоримое преимущество. Модульный компилятор разделен на две части: front-end и back-end. Front-end компилятора переводит исходный код программы конкретной в универсальный платформонезависимый виртуальный код (байт-код). Back-end обрабатывает полученный байт-код и преобразовывает его непосредственно в машинный код конкретной платформы. Back-end LLVM поддерживает целый ряд различных платформ, что в будущем даст возможность RAD Studio расширить список поддерживаемых платформ.

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

Совсем недавно, весной этого года, комплект поставки старших редакций Delphi/RAD Studio пополнился новой библиотекой доступа к данным – FireDAC, созданной на базе хорошо известного решения AnyDAC, созданного и долгое время развиваемого Дмитрием Арефьевым. FireDAC является универсальным набором компонентов, поддерживающим доступ к весьма внушительному списку СУБД. И если мы говорим о настольных приложениях, то платформа FM с помощью FireDAC поддерживает практически все популярные СУБД. Что же касается мобильных приложений, то здесь существуют определенные ограничения, связанные, прежде всего, с отсутствием библиотек доступа к большинству СУБД. Так мобильные Delphi приложения будут поддерживать SQLite (родная СУБД как для iOS, так и для Android) и IBLite/IB ToGo. Но напрямую подключиться, например, к Oracle уже не получится.

Тем не менее, существует возможность создания мобильных клиентов с помощью многозвенной технологии DataSnap. Эта технология не нова и довольно хорошо себя зарекомендовала среди разработчиков.

И, коль скоро мы затронули тему работы с базами данных, следует упомянуть об одном из ключевых отличий FM и VCL приложений. Для отображения данных в VCL обычно используются специальные элементы управления, так называемые DB-контролы. Для FM такие элементы управления не реализованы и для отображения данных используются обычные элементы управления. Связь между данными и элементами управления производится при помощи механизма Live Binding. И хотя Live Binding интуитивно понятен, прост в изучении и полностью визуализирован, работа с этой технологией все же требует некоторых навыков.

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

Хотя подобная ситуация, в принципе, характерна для любой интенсивно развивающейся технологии.

Данная статья открывает цикл публикаций, посвященных созданию мобильных приложений в Delphi. Мы надеемся, что этот цикл поможет вам не только познакомиться с возможностями новой среды разработки, но и разобраться с основными техническими вопросами, которые могут вызвать сложность.

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

Источник

Разработка на Delphi под Android. Краткие впечатления.

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

Многие Delphi разработчики практически сразу же начали осваивать новую для себя область. Одновременно с этим в их адрес посыпались вопросы со стороны коллег, которые по тем или иным причинам ещё не были с ней знакомы. Разработка под Android на Delphi? Как это? Каково это? Стоит ли этим заниматься? И ряд других подобных вопросов. Эти вопросы периодически возникают как в публичных обсуждениях на форумах и других web ресурсах, так и в приватных разговорах.

Читайте также:  Мишки 2 андроид полная версия

Причина этому не столько новизна и перспективность самой возможности разработки под Android на Delphi или популярность данной операционной системы, сколько, в первую очередь, отсутствие достаточного объёма информации. Даже сейчас её количество более чем скудное.

В интернете в основном это официальная документация Embarcadero, а также по большей части отрывочные материалы различных блогов и форумов. В отношении литературы ситуация ещё сложнее. На момент написания этой статьи, единственной книгой по данной тематике на русском языке была книга Дмитрия Леонидовича Осипова «Delphi. Программирование для Windows, OS X, iOS и Android». Прочитав эту книгу, могу сказать, что книга просто отличная. По крайней мере, по моему личному мнению (убедительная просьба не считать это рекламой). Однако недостаток литературы всё равно ощущается.

Поэтому нет ничего удивительного в том, что многие вопросы, в том числе самого общего плана, продолжают возникать.

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

«Плюсы»

Первая из сильных сторон разработки под Android на Delphi это само наличие такой возможности. После выхода версии XE5 Delphi окончательно перестал быть языком программирования «только для компьютеров».

Конечно, возможность создания мобильных приложений как таковая появилась значительно раньше, в версии XE2. Однако она была доступна только для операционной системы iOS компании Apple и во многом благодаря этому первое время не была особо востребована. Всё-таки, по сравнению со многими аналогичными устройствами на базе Android, iPhone и iPad стоят не дёшево. Это уже само по себе уменьшает возможный спрос и увеличивает стоимость разработки. Также, помимо этого, своё определённое влияние оказывала и продолжает оказывать политика самой Apple по отношению к разработчикам.

С появлением возможности писать программы для Android ситуация резко изменилась и разработка мобильных приложений на Delphi начала интенсивно набирать обороты.

Так же как и для iOS разработка для Android осуществляется средствами кроссплатформенной библиотеки FireMonkey. Поэтому, для тех, кто и раньше использовал эту библиотеку, даже несмотря на особенности мобильных приложений, очень многое окажется знакомым.

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

Очень обрадовало то, что многие библиотеки компонентов и технологии, которые изначально были разработаны для VCL, также имеют реализацию для FireMonkey и доступны при разработке для Android. Среди них хотелось бы отметить dbExpress, FireDAC, DataSnap. Также реализацию для FireMonkey под Android имеет и широко известная библиотека для работы с сетью Indy.

Однако тех, кто привык использовать эти компоненты и технологии в «обычных» приложениях ждут два серьёзных разочарования.

  1. Реализация FireDAC, DataSnap и Indy для Android ограничена. То есть при разработке под Android доступны не все компоненты.
  2. Операционная система Android поддерживает достаточно небольшое количество СУБД. При этом многие распространённые СУБД, к сожалению, в их число не входят.
Читайте также:  Восстановление андроида без потери данных

В прочем, если СУБД имеет драйвер или хотя бы возможность его сборки под Android (как, например, MySQL), то последнее, скорее всего, будет не актуально. В противном случае, при написании клиентского приложения придётся всерьёз позаботиться о реализации его взаимодействия с сервером.

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

Возможности по работе с мультимедиа, включая камеру, и датчиками (начиная с версии XE6) также проработаны на достаточно высоком уровне.

«Минусы»

Самое первое, что бросается в глаза это работа эмулятора. В силу своего несовершенства, эмулятор, по крайней мере, в случае RAD Studio вообще и Delphi в частности, не всегда оказывается способен запустить даже обычный «Hello, World!». Поэтому о возможности его использования лучше всего сразу забыть. Запускать и отлаживать программы для Android, вероятнее всего, придётся непосредственно на устройстве, со всеми вытекающими последствиями и рисками. Не говоря уже о том, что Android устройство придётся покупать (при его отсутствии).

Также процесс разработки существенно осложняется по причине многочисленных изъянов и недоработок в библиотеке FireMonkey. Многие из них сохранились ещё со времён версии XE2.

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

Буквально около трёх месяцев назад на одном из форумов обсуждался один из таких недостатков FireMonkey. Оказалось, что в этой библиотеке функционал для работы с массивами даже к моменту выхода версии XE5 так и не был в достаточной степени проработан. В результате решение, основанное на использовании таких функций как Low и High, в FireMonkey оказалось не работоспособным (страница с обсуждением). Полагаю, выводы о том, как подобные особенности библиотеки сказываются на процессе разработки с её использованием, напрашиваются сами собой.

«Итог»

Библиотека FireMonkey имеет достаточно большой потенциал. Хочется верить, что её недостатки, в том числе описанные в этой статье, это всего лишь на всего, так называемые «детские болезни», которые уйдут в прошлое в ходе её дальнейшего развития. Что со временем Embarcadero наконец-то начнёт уделять должное внимание не только вопросам, связанным с её расширением и продвижением на рынок, но и вопросам, связанным с работоспособностью этой библиотеки. Однако это пока только оптимистичные надежды относительно будущего.

Что касается реальной ситуации, на сегодняшний день. Разрабатывать приложения с использованием FireMonkey, в том числе под Android вполне возможно. Даже несмотря её существующие издержки. Однако до момента своего полного устранения они, так или иначе, будут работать как против разработчика, так и против самой Embarcadero.

Ссылки

2.Разработка Qt-приложения с доступом к MySQL под Android – В этой статье помимо всего прочего приведено краткое описание процесса сборки драйвера для MySQL под Android. Поэтому данная статья может оказаться весьма полезной и для Delphi разработчиков.

Источник

Оцените статью