Delphi программирование для android

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

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

Причина этому не столько новизна и перспективность самой возможности разработки под 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 разработчиков.

Релиз Delphi XE5 уже давно состоялся. Так что, советую Вам почитать ещё несколько статей по разработке приложений для Android в Delphi:

И следите за пополнением списка статей про Android на специальной странице блога.

До официального релиза RAD Studio XE5 остается совсем немного времени и, скорее всего, уже в сентябре каждый желающий сможет оценить новые возможности по разработке приложений под Andro >

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

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

«Hello, Android»

В главном меню нам теперь предлагается создать 5 различных типов приложений, в том числе и «FireMonkey Mobile Application«:

Как и в случае с iOS, запрос на создание мобильного приложения запускает небольшой симпатичный мастер создания заготовки нового приложения:

Для начала посмотрим как вообще собираются приложения под Android, не вникая особенно в саму суть программирования под эту ОС, поэтому я выбрал самый первый и самый простой шаблон под названием «Blank Application». После нажатия кнопки «Ок» Delphi создает нам новый проект мобильного приложения и уже в окне дизайнера мы можем выбрать необходимый размер окна приложения. И, если с iOS все было относительно просто — мы могли выбрать, по-моему, три типа устройств: iPhone, iPhone 5 и iPad, то теперь список устройств стал намного больше и выглядит вот так:

Читайте также:  Как закачать видео с компа на айфон

Для примера, возьмем в качестве «шкуры» Google Nexus 4:

Теперь напишем свой вариант самой популярной в мире программы «Hello, world». Кидаем на главную форму кнопочку, устанавливаем её свойство Align в значение alCenter и пишем обработчик OnClick:

Теперь мы подошли к самому главному моменту в сегодняшней статье — сборке и запуску Android-приложения.

Как известно, не так-то просто и легко в iPhone закинуть свое приложение — надо покупать какие-то лицензии разработчика, потом что-то настраивать и т.д. и т.п. С Android в этом плане все намного проще — могу залить в свой девайс все, что посчитаю нужным, не спрашивая при этом ни у кого разрешения и, тем более, не платя при этом не копейки. Правда для этого надо немного настроить свой девайс, чем мы собственно сейчас и займемся.

Настройка Andro >

и на вашем устройстве настройки могут выглядеть немного по другому.

Первым делом, после подключения аппарата через USB-кабель к компьютеру, необходимо включить опцию «Отладка по USB»

Опция «Отладка по USB» в HTC One (Android 4.2.2)

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

Заходим в «Настройки»

Перейти в раздел «О телефоне» -> «Версия ПО» -> «Дополнительно»

Несколько раз быстро нажать на строку «Номер сборки»

Вернуться в «Настройки» — там появится новый раздел «Для разработчиков»

Заходим в этот раздел и включаем искомую опцию — «Отладка по USB«. Здесь же, кстати, можно настроить и другие настройки для разработчиков, но об этом, если возникнет необходимость, я расскажу потом.

Опция «Отладка по USB» в HTC Desire S (Android 2.3.5)

Здесь включение настройки происходит проще. Заходим в «Настройки»—>»Приложения»:

Заходим в раздел настроек «Разработка»:

Включаем опцию «Отладка по USB»

Опция «Отладка по USB» в планшете Prestigio (Android 4.0.4)

Здесь ещё проще. Заходим в «Настройки» и ищем раздел «Для разработчиков»:

Где, собственно, и включаем необходимую нам «Отладку по USB».

Теперь устройства готовы к работе и можно приступать к следующему шагу — настройке Delphi XE5.

Настройки Andro >

Заходим в «Project Manager» и добавляем новую платформу:

В открывшемся диалоговом окне выбираем «Android» и жмем «Ок»:

При этом, если настройка SDK проходит «с нуля», то вы должны попасть в «SDK Manager». Если этого не произошло, то до раздела «SDK Manager» можно добраться через главное меню «Tools —> Options —> SDK Manager». Пустой менеджер выглядит следующим образом:

Жмем кнопку «Add» и добавляем новый «Android SDK»:

Для начала нам предлагают указать путь к Java, Android SDK и NDK. О том, как устанавливать эти инструменты Android-разработчика читайте в предыдущей статье. Я же укажу необходимые пути:

Если на этом шаге Вы все сделали правильно и правильно указали пути к SDK и NDK, то на следующем шаге Вам ничего не придется делать, кроме как подтвердить настройки путей к необходимым для сборки приложения инструментам. Например, у меня мастер показал следующие настройки инструментов:

При этом мастер сам выбрал необходимый API Level (в прошлый раз я устанавливал 17 и 18 уровни API и мастер взял самый последний — 18-й).

Жмем «Finish» и закрываем менеджер SDK. Теперь в окне «Project Manager» можно увидеть нашу платформу:

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

Сборка и загрузка приложения на Android-устройство

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

И, раз уж первым я настраивал HTC One, то этому же аппарату и предстоит первому принять наше приложение. Подключаем смартфон к компьютеру, переходим в «Project Manager» и раскрываем раздел «Target» и видим там новое устройство:

Теперь жмем F9 и ожидаем появления нашего собранного приложения на экране Android-устройства. В списке приложений HTC One наш «Hello, Android» выглядит так:

Переходим к следующему девайсу — HTC Desire S. Подключаем смартфон к ПК и обновляем список Target в Delphi XE5:

Иконка приложения в списке:

Проверка приложения на планшете. Планшет Prestigio в списке Target:

Приложение в списке:

Как видите, приложение собралось и успешно было запущено на трех различных устройствах.

Помниться, ещё когда разработка под Android в Delphi стояла в далеких планах Embarcadero, где-то в Сети (а может даже и у меня в блоге) кто-то высказывал мнение, что скорее всего поддерживаться будут только устройства с последними версиями Android, а старье типа Android 2.x вообще не будет рассматриваться.

Как видите, в этой статье я собирал приложение для устройств с самыми разными версиями Android, в том числе и с таким «динозавром» как Android 2.3.5 — никаких проблем со сборкой у меня не возникло и при этом я использовал API Level 18 (для Android 4.x). Так что,в части поддержки различных версий Android в Delphi XE5 никаких проблем нет.

На сегодня все. В следующий раз попробуем рассмотреть что-нибудь по-сложнее, чем «Hello, Android»

Книжная полка

А сколько весит hello android в application store и debug версиях?

Написал приложение как в уроках на… http://severinfo.com/index.php/firemonkey/1-firstprogramonfmx
и Debug и Release версии практически не отличаются по размерам… Так что только оптимизация и еще раз оптимизация…

Хотелось бы увидеть окно с настройками компиляции.

Torbins, сорри, туплю..какое окно настроек интересует?

Все 🙂 Можно ли решать, какие наборы инструкций будут использоваться?

Vlad, спасибо за статью, но все же, сколько «весит» приложеньице?

Sergionn, Александр, ребят, скажу как есть — этим вопросом даже не заморачивался, т.е. просто собирал в debug’е и всё. В debug’е было что-то около 9-10 Мб на HTC One — это при том, что я пальцем не притронулся к дефолтным настройкам сборки. Кстати, в статье использовалась не самая свежая бета — поэтому размер пока может и не имеет значения. Можно, конечно, ради спортивного интересу проверить сколько будет весить «Hello world» написанное на С++ с использованием того же NDK, но не в ближайшие пару дней точно

Влад добрый день. Интересует где Вы взяли Xe5?
Подскажите еще, какой компонент используете в качестве таблицы списка в DelphiFeed?

Roman, xe5 у меня бета-версии. Дали когда записался на тестирование. А компонент — так это обычный TGrid.

9-10мб очень много
eclipse собрал бы не более 1мб

Vlad написал же, что это размер debug сборки, в release выйдет в разы меньше. Не 1mb явно, но эта разница не большая и будет уже не столь значительна в больших приложениях.

Извините, что я не по теме. Я просто решил оставить комментарий в самой свежей статье. Я обнаружил странное поведение Delphi 7 при трассировке. Было бы интересно услышать мнение профессионала. Записал видео, качество, правда, не очень.
http://www.youtube.com/watch?v=WlbwnQ9_Bd4

Михаил, вы столкнулись с классической ошибкой копипаста.
Дело в том, что для правильной трассировки необходимо, чтобы все строки в паскалевском файле заканчивались на #13#10. Но скопированные из браузеров фрагменты не редко заканчиваются на #10. Это дезориентирует трассировщик.

Оу…. спасибо большое! Я уже думал магия или что-то в этом духе, спасибо, что прояснили ситуацию 🙂

Подозреваю, что на Android 2.3 работает благодаря пакету совместимости от Google (который предоставляет более новое API для более старой ОСи)

Вроде всё правильно сделал, но у меня приложение пустое разворачивается, какие бы компоненты я не ставил.
А 4.1.2 SM-T211

alikust, всмысле? Как разворачивается?

У меня такая же проблема. То есть при запуске приложения на форме не видно никаких компонентов.

Mike, такое бывает, если при загрузке приложения ваше устройство «спит». Попробуйте нажать F9 и держать устройство в работе пока приложение не запустится.

Так я так и делаю. Пробую и с дебагом и без, всё равно просто белый экран, а если например разместить на форму кнопку и написать в событие нажатия showmaessage(»); то если при запуске приложения жать на кнопку (которой не видно) то будет выдавать сообщение.

Спасибо за статью! А вы пробовали подключаться к удалённым БД — например Oracle или Possgres?

с такими БД не работал никогда и поэтому даже не пытался к ним подключаться с Android. С SQLite сейчас работаю по-маленьку через dbExpress — пока никаких проблем не обнаружил.

Подскажите, при смене ориентации экрана в приложении не работает прокрутка (когда в landscape не помещаются все элементы формы прокрутка вертикальная просто не работает), как можно исправить это? Спасибо.

[…] XE5 как в бета-версиях, так и в текущей версии. Однако в комментариях к последним статьям о Delphi XE5 ребята говорят, что […]

Я не понял,пишу на Паскале и получаю приложение на андорид телефоне. Точно на Паскале ?Вы это серьезно. Ни в какую жава-муть вникать не надо,если это правда ,то это очень здорово…Чтобы там не говорили,но Паскаль по-настоящему отличный язык Си тоже ничего,но остальные-это просто бред какой-то.

Доброго Времени Сутки. Есть такая проблемка стараюсь сделать приложения для Andro > … Подробнее »

Такая же проблема

[…] релиз Delphi XE5 (многие уже отмечают) и Embarcadero вслед за поддержкой iOS обещает нам […]

По поводу Е2312 добавь иконки в проект, при компиляции создается res файл содержащий изображения,который хочет найти компилятор

Установил Embarcadero RAD Studio XE5 с Android. Написал приложение для Android. Запускаю эмулятор. Всё работает нормально. Запускаю созданное приложение — вместо него черный экран в эмуляторе. Если выбрать Target Windows, то приложение работает. А в эмуляторе не хочет. Создавал несколько эмуляторов с разными параметрами, не работает программа.
Помогите, в чем может быть причина?

А в каком варианте лицензии XE5 (starter / professional / enterprise / architect) есть возможность компилить под android?

У меня стоит Enterprise, а как обстоят дела в других вариантах — не в курсе. Это надо у дилеров узнавать

А как настроить тоже самое для Iphone?
для аднроида так просто, а для айфонов в вики пишут что надо к МАКу подключаться.

Есть вариант проще? чтобы тоже по USB

по-моему без лицензии разработчика нельзя. А вместо железного макбука моно использовать виртуалку с мак осью и симулятор.

установил RAD Studio xe5, законнектился по сети к маку, в который по усб подключен Iphone 4S
выполнил все инструкции по настройке.
Имеется аккаунт разработчика.
Все нормально работает на моём телефоне, при запуске приложения с винды, результат вижу в телефоне.

Вопрос: не работает на другом телефоне, то же самой модели. с другим аккаунтом.
что можно сделать чтобы приложение загрузить на другой телефон?

Поставил XE5 для андроида, никак он не мог он увидеть в таргет мои планшеты, скачивал дрова на планшеты но никак.
В очередной попытке поставил Моборобо и все ок.

Выдавал сначала одну ошибку, победил добавлением в переменные PLATFORM=Win32, теперь не деплоится:
[PAClient Error] Error: E0004 File does not exist: C:UsersGreyScallDocumentsRAD StudioProjectsAndroidTest_0001Test_0001._@emb_.tmp

Выдавал сначала одну ошибку: [DCC Fatal Error] Project1.dpr(1): F1027 Unit not found: ‘System.pas’ or binary equivalents (.dcu/.o)
Победил добавлением в переменные PLATFORM=Win32, теперь не деплоится: [PAClient Error] Error: E0004 File does not exist: C:UsersAdminDocumentsRAD StudioProjectsProject1._@emb_.tmp

Если у вас стоит Update 2, то попробуйте переустановить PAServer. Он лежит в папке …:RAD StudioXE5PAServer Мне мне это помогло избавиться от ошибок сборки и деплоя приложения

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

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

З.Ы. Делать все через код можно, но в лом 🙂 хочется все таки визуально размещать и видеть реальные размеры-разметку

у меня была проблема следующая — кидаю на форму TLayout и на него любой компонент…ну, например, TEdit. У этого Edit’а выставляю Anchors = [… akRight], чтобы, если девайс перевернут компонент вытянулся/сжался как надо. В дизайнере все выглядит как надо, запускаю на девайсе — правая граница Edit вылазит за край формы. Убираю Edit c TLayout (размещаю его прямо на форме) — все ок.

Подпись приложения.
Как подписать приложение, выходит ошибка INSTALL PARSE FAILED NO CERTIFICATES

Project ->Options ->Provisioning -> кнопка New Keystore

Как создать новую форму ? Main form.. form1 значит можно и вторую форму создать ? Неудобно ато в одной форме работать

Да как бы так же само как и в других версия Delphi создается и используется также само

Доброго времени суток.
Эта ошибка выводится в полу Messages при компиляции.
Вот она:
[PAClient Error] Error: E0004 File does not exist: C:Users╒└╩┼╨DocumentsRAD StudioProjectsAndroidTAndroidT._@emb_.tmp

Здесь ╒└╩┼╨ — по моему имя пользователя, а AndroidT — название проекта.
Помогите избавиться от ошибки.
Заранее спасибо!

Кто-нибудь побил белый экран (это когда не видно компонентов на экране) при работе приложения?
и попутно вопрос: как запустить приложение под интел? игры с настройками в NDK и SDK к успеху не привели?

wood, Intel Atom не поддерживается в XE5

[…] О том, как я подключал свой устройства я рассказывал тут и тут. Но? раз Всеволоду требуется описание по […]

Относительно недавно, осенью 2013 года с выходом в свет Embarcadero RAD Studio XE5 язык Delphi совершил очередной эволюционный скачок — у него появилась принципиально новая возможность разработки приложений для платформы Android. Отметим, что современные версии RAD Studio XE5/XE10 позволяют создавать не только приложения для операционной системы компании Google, но и полноценные программные продукты, предназначенные для работы под управлением операционных систем: Microsoft Windows 32/64 и OS X, iOS компании Apple! В основу кроссплатформы положена во всех отношениях уникальная библиотека FireMonkey (FMX).

Книга, которую вы держите в руках, посвящена раскрытию триединой задачи.

Во-первых, в ней изложены ключевые новинки, появившиеся в языке Delphi начиная с версии Delphi 2009 (первая версия Delphi вышедшая из-под крыла компании Embarcadero) и заканчивая Delphi XE10. Речь пойдёт о нововведениях в синтаксисе и семантике языка актуальных как для классической библиотеки VCL, так и для FMX.

Во-вторых, в книге рассматриваются основы кроссплатформенной библиотеки FMX (наиболее показательные классы, компоненты и порядок их применения). Таким образом, представленный материал окажется одинаково полезным не только для программистов, нацеленных на Android, но и для разработчиков всей линейки программных продуктов, поддерживаемых библиотекой FMX.

В-третьих, кроме собственно рассмотрения основ работы с FMX книга знакомит читателя с технологией разработки мобильного приложения для Android с помощью Delphi XE5/XE10. Начиная с особенностей подключения устройства к компьютеру, заканчивая выпуском программного продукта.

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

Замечание
Примеры к книге вы сможете найти на интернет-странице по адресу: https://yadi.sk/d/ERnh6UIzr4WfL

Замечание
Чтобы всегда быть в курсе последних событий в области программирования для Android установите на свой компьютер бесплатное программное обеспечение от компании Google — Android Studio. Для этого обратитесь по адресу: http://developer.android.com/sdk/installing/index.html

1. Подготовка к программированию

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

Итак, уточним исходные условия. В нашем распоряжении имеется:
• компьютер с операционной системой Windows;
• среда проектирования RAD Studio XE5 и выше;
• мобильное устройство, работающее под управлением Android.

Наша задача — написать простейшее приложение на Delphi для Android.

С чего начать? Если вы выступаете счастливым обладателем мобильного устройства с операционной системой Android, то начать следует с установки драйверов устройства на компьютер.

Установка драйверов устройства

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

Как вы догадываетесь невозможно дать один единственный универсальный URL–адрес на котором окажутся драйверы для всех существующих на сегодня устройств. Так что смело следуйте на сайт разработчика вашего смартфона или планшета и изучайте предлагаемое к загрузке программное обеспечение. Вполне вероятно, что там не окажется архива с условным названием «драйверы для программистов Delphi», однако это не беда. Практически у всех разработчиков «железа» имеется программный продукт, рекомендуемый для работы с тем или иными мобильным устройством. Это может быть программное обеспечения для синхронизации файлов, управления контактами, планирования, управления мультимедиа, и т. п. Устанавливая этот продукт вы вместе с ним автоматически установите и последние драйверы. Косвенным свидетельством этого станет появление в диспетчере устройств Windows узла с вашим аппаратным средством.

Перевод устройства в режим отладки по USB

Следующим этапом подготовки к разработке программ для Andro >Настройки | Параметры разработчика ( Settings | Developer options ).

Рис. 1.1. Строка с номером сборки

В современных устройствах (начиная с Andro >Настройки | Об устройстве ( Settings | About ) или Настройки | Система | Справка | Сведения о ПО и отыскать строку со сведениями о номере сборки ( Build Number ) и, несмотря на то, что строка выглядит неактивной следует несколько раз щёлкнуть по ней пальцем (рис. 1.1). В результате таких, на первый взгляд абсолютно неперспективных действий вы раскроете скрытую строку Параметры разработчика .

Рис. 1.2. Настройка параметров разработчика

Вот такой хитрый трюк от программистов из компании Google позволяет отсечь от режима разработчика 99% даже и не подозревающих о его существовании пользователей устройств на платформе Android. Нас он остановить не смог, поэтому двинемся дальше и заглянем в столь тщательно скрываемые параметры разработчика (рис. 1.2).

По большому счёту для начала работы нам достаточно поставить всего одну «галочку» напротив строки Отладка USB . В ответ на это действие ваше мобильное устройство попросит подтвердить выбранное действие, запомнит отпечаток ключа RSA (позволяющий уникальным образом идентифицировать компьютер) и станет ожидать команд разработчика.

Замечание
В напарницы к «галочке» Отладка USB можно присоединить ещё одну «галочку» — Активный режим . Это позволит устройству не отключать экран в ситуации, когда оно получает электропитание по USB–кабелю от компьютера.

Установка дополнительных пакетов SDK

По умолчанию вместе с установкой Delphi XE10 на компьютер разработчика поставляется SDK для Andro >Android SDK Manager и добавить дополнительные пакеты SDK.

Вызов менеджера осуществляется из меню Пуск с помощью пункта Android Tools . Это ничто иное как файл andro /> C:UsersPublicDocumentsEmbarcaderoStudio
n. n
PlatformSDKsandroid-sdk-windows ools

После запуска менеджера отметьте элементы необходимые для установки, примите лицензионное соглашение и абсолютно бесплатно получите из Интернет интересующие вас пакеты и библиотеки (рис. 1.3).

Внимание!
Если Android SDK Manager по каким-то причинам отказывается устанавливать или обновлять SDK, то перейдите к окну опций (пункт меню Tools | Options ) и отметьте элемент Force https://. В результате этой операции Android SDK Manager откажется от применения защищённого протокола HTTPS в пользу обычного HTTP.

Рис. 1.3. Установка SDK с помощью Android SDK Manager

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

Исполняемый файл эмулятора виртуального устройства (а точнее менеджера виртуальных устройств Android Virtual Device Manager ) вызывается к жизни файлом andro >tools , что и Android SDK Manager .

Рис. 1.4. Создание виртуального устройства AVD

Благодаря менеджеру виртуальных устройств мы приобретаем возможность не только воспользоваться рядом уже предопределённых устройств, это было бы очень просто. Менеджер наделяет программиста полномочиями если не верховного божества, то по крайней мере ведущего инженера самого современного завода по выпуску электроники. Взгляните на рисунок 1.4 с экранным снимком Android Virtual Device Manager .

Нам разрешается установить достаточно широкий перечень аппаратных настроек и ограничений, в частности:
• размер и разрешение экрана;
• ключевые сенсоры (GPS, гироскоп, акселерометр, бесконтактный датчик);
• наличие камер (фронтальная и задняя);
• средства ввода (клавиатуры, трекболы, сенсорный экран);
• объём кучи памяти;
• наличие аппаратных клавиш.

Описав параметры будущего устройства следует обратиться на вкладку Android Virtual Devices и, нажав кнопку OK создать новое виртуальное устройство.

Замечание
Заметим, что создание и запуск виртуального устройства достаточно ресурсоемкое и, соответственно долгое занятие даже на высокопроизводительных компьютерах. Поэтому запаситесь терпением…

Настраивая виртуальное устройство не забывайте, что значения «виртуальных» параметров позднее будут поддерживаться за счёт вполне реальных аппаратных возможностей вашего компьютера. Так что соблюдайте здоровое равновесие. Особо осторожным следует быть при определении размерности ОЗУ, даже если на «борту» подлежащего эмуляции планшета имеется 32 ГБ памяти, это не означает, что их сможет распределить Android Virtual Device Manager в ОЗУ персонального компьютера.

Ещё одно ограничение связано с соответствием разрешения вашего монитора и экрана эмулируемого мобильного устройства, современный монитор с разрешением 1920×1080 пикселей вряд ли сможет вместить полномасштабную картинку виртуального планшета с разрешением 2560×1600… Поэтому в окне Launch Options (появляющегося после запуска виртуального устройства из Android Virtual Device Manager ) стоит отметить пункт Scale Display To Real Size разрешающий масштабировать разрешение в соответствии с возможностями дисплея.

Рис. 1.5. Внешний вид эмулятора устройства Android

После запуска эмулятора (рис. 1.5) вы получите доступ к основным (но по объективным причинам далеко не ко всем) функциям устройства. Например, виртуальное устройство столкнётся с некоторыми трудностями при эмуляции телефонных вызовов, работе с камерой, позиционировании, и т. п.

Используя эмулятор для отладки ваших проектов учитывайте, что он далеко не всесилен. К сожалению эмулятор не способен в полной мере реализовывать следующий функционал:
• идентифицировать состояние телефона;
• выполнять и принимать реальные телефонные звонки;
• осуществлять фото- и видеосъёмку;
• анализировать состояние батареи;
• работать с Bluetooth.

Кроме того имеются существенные ограничения по взаимодействию с сенсорами и датчиками (акселерометр, освещение, магнитное поле, и т. д.).

Замечание
Некоторого прироста скорости работы эмулятора можно добиться, активировав переключатель Use Host GPU . В этом случае часть нагрузки, связанной с выводом изображений на виртуальном экране перекладывается на графический процессор компьютера.

Настройки проекта FMX

Для создания нашего первого проекта для Andro >File | New | Multi–Device Application среды проектирования. В появившемся окне выбора Multi–Device Application определитесь с внешним видом вашего приложения. В простейшем случае можно воспользоваться шаблоном пустого ( blank ) проекта.

Следующее действие разработчика должно быть связано с определениями настроек проекта в менеджере проектов ( Project Manager ). По умолчанию каждый вновь создаваемый проект Delphi нацеливается на работу с платформой Win32. В нашем случае среду проектирования необходимо переориентировать на операционную систему Google, для этого придется дважды щёлкнуть левой кнопкой мышки по строке с символом Android — пиктограммой робота (рис. 1.6).

Рис. 1.6. Менеджер проекта FMX для платформы Android

Обратите внимание на то, что вместе с выбором платформы мы одновременно определяем текущий SDK. С выходом нового SDK вы имеете возможность установить обновление с помощью Android SDK Manager . Затем, вызвав окно опций проекта (пункт меню Tools | Options ) следует добраться до узла Environment Options | SDK Manager и подключить или удалить за ненадобностью пакет SDK.

Обязательно укажите целевое устройство, на котором будет осуществляться отладка проекта, таким устройством может стать, как реальный смартфон или планшет (подключенный к компьютеру по USB-кабелю), так и сконфигурированное вами с помощью Android Virtual Device Manager виртуальное устройство.

Выпуск приложения в отладочном режиме

Процесс подготовки подходит к финишной прямой. Нам осталось самое главное — опробовать процесс собственно создания приложения. Тем более, к этому всё готово:
• к компьютеру с помощью кабеля USB подключено переведённое в режим отладки устройство на платформе Andro /> • установлен и выбран целевой SDK;
• в менеджере проектов (рис. 1.7) назначено целевое устройство;
• в Delphi создано новое (пусть даже пустое) приложение для мобильной платформы.

Рис. 1.7. Эмулятор устройства с запущенным приложением

Подведём краткие итоги первой главы книги. Для того, чтобы вы смогли начать разрабатывать приложения для мобильной платформы Andro /> • установить Delphi XE5 (или более поздние версии);
• установить драйверы мобильного устройства;
• с помощью USB-кабеля подключить к компьютеру мобильное устройство на базе Andro /> • в случае отсутствия физического устройства настроить эмулятор;
• обновить из Интернета необходимые пакеты SDK.

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

2. Особенности приложения для Android

Первое приложение «Hello, Android!» нами уже написано и даже апробировано. При этом мы даже на йоту не углубились в изучение особенностей архитектуры операционной системы компании Google и приложения для этой ОС. Хорошо ли это? С одной стороны, да. И в первую очередь служит прямым доказательством эффективности современной среды разработки компании Embarcadero и кроссплатформенной библиотеки FMX. С другой стороны, стоит понимать, что творить чудеса только за счёт библиотеки FMX можно, но не долго. Поэтому к нашим знаниям языка программирования Delphi стоит добавить понимание основ Android.

Путь к основам Android мы начнём с рассмотрения структуры этой операционной системы. Многослойный программный «пирог», которым по своей сути и является Android предложен на рис. 2.1. Не в коем случае не претендуя на академичность, постараюсь коротко описать назначение каждого из слоёв.