Меню

Настройка делфи для андроида



Программирование на Delphi. Часть 2. Разработка Android-приложения

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

1. Подготовка среды разработки Delphi для создания Android-приложений

Установим все необходимые инструменты для разработки. Нажмите в главном меню Tools — Manage Platforms

Выберите вкладку Additional Options и там отметьте галочками Java Development Kit 1.8 и Android SDK 25.2.5 — NDK r17b. Нажмите Apply — это запустит процесс скачивания и установки компонентов.

Процесс довольно длительный, может потребоваться перезапуск среды разработки. Старайтесь не нагружать компьютер другими операциями. После успешного завершения вы увидеть надпись Operation Completed .

Нажмите Start working — среда разработки готова к созданию Android-приложений.

ЗАМЕЧАНИЕ. Я протестировал разные варианты установки компонентов Android на нескольких компьютерах и операционных системах. В том числе: когда SDK уже установлено (с Android Studio ), когда компоненты ставились вручную с серверов Google, когда использовалась виртуальная машина AdoptOpenJDK . Если вы хотите пойти таким же сложным путём (ручная установка), вот некоторые параметры работающих версий: AdoptOpenJDK (Windows 64-bit OpenJDK 8 (LTS) with HotSpot JVM), Android SDK (sdkmanager «build-tools;29.0.0» «extras;google;usb_driver» «platforms;android-26» «tools» «platform-tools» ), Android NDK r17b .

Если автоматическая установка не сработает, пишите вопросы в комментариях — я постараюсь ответить и дополнить статью.

2. Подготовка проекта Android-приложения

Нажимаем на главном экране (Welcome Page) Create a new Multi-Device Application — Delphi.

Выбираем Header/Footer (шаблон приложения с шапкой и подвалом) и жмём ОК .

Источник

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

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

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

Читайте также:  Samsung 4020 принтер сброс настроек

Необходимо отметить, что библиотека 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 10.1 Разработка приложения “Я математик” для Android. Макет приложения

Прошло уже несколько лет с тех пор, как я последний раз более менее серьезно разбирался с FMX (aka FireMonkey). Впервые разработчики массово узнали о FMX ещё пять лет назад, в 2011 году, когда на рынок вышла Delphi XE2 в составе которой и появилась библиотека Firemonkey. С одной стороны, появление в составе Delphi библиотеки, с помощью которой можно разрабатывать приложения под Mac OS (тогда поддерживалась только эта платформа) вызвало восторг, желание изучить новые компоненты, поделиться с другими впечатлениями об использовании “огненной обезьяны”. Видимо, в тот момент виртуалки с Mac OS побили все рекорды по скачиванию. С другой же стороны, что скрывать, новая библиотека вызывала, если и не тихий ужас, то, по крайней мере, удивление – багов и недоработок там хватало. Однако, уже в Delphi XE3 библиотека была значительно переработана и получила новое название FMX 2 . Не могу сказать, что всё восприняли обновление “на ура”, так как библиотека была переписана чуть более, чем наполовину и собранные в Delphi XE2 проекты пришлось практически переписывать заново. Затем вышла Delphi XE4 с поддержкой iOS, а после – Delphi XE5, в которой наконец-то появилась поддержка Android. И, надо сказать, что мои попытки “проникнутся духом FMX” закончились ровно там, где и начинались – в Delphi XE5. Причина была скорее в нехватке свободного времени, а не в том, что я как-то предвзято относился к FMX.

Читайте также:  Камера для айфона с ручными настройками

И вот сейчас на рынке во всю пиарится Delphi 10.1 Berlin, а я решил снова залезть в дебри FMX и, наконец-то, сделать то, что планировал уже давным-давно – переписать приложение “Я математик” под Android. Надо сказать, что сейчас я, как и 5 лет назад, стою в самом начале изучения библиотеки FMX, так как поменялась она значительно. Надеюсь, что на этот раз получится сделать что-нибудь более менее работающее под Android, а не только китайский календарь.

Инструментарий для работы у меня следующий:

  1. HTC One M7 с Android 5.0.2
  2. Delphi 10.1 Berlin
  3. Android SDK 24.3.3 (32 bit) – устанавливался отдельно от Delphi (вот по этой инструкции), так как изначально я не планировал в ближайшее время возвращаться к разработке под Android
  4. LiteDAC 2.7.24 (если потребуется разработка базы данных)

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

Идея приложения

Идея приложения “Я математик” сводится к тому, чтобы научить пользователя быстро решать в уме различные задачки, например, быстро умножать любое число от 0 до 99 на 5, или вычислять квадратные корни и так далее. После выхода первой версии программы появился ряд идей по доработке приложения, которые я и попытаюсь реализовать в версии для Android. Так же, специально для самых маленьких пользователей я планирую добавить в программу небольшой блок задач на знание таблицы умножения (этой функцией, я думаю, будет пользоваться, как минимум один, но самый важный для меня человек – моя дочь).

Первый макет приложения.

Открываем Delphi 10.1 и в главном меню выбираем File – New – Multi-Device Application.

Delphi услужливо нам предложит выбрать тип будущего приложения: пустое приложения, приложения с табами, 3-D Application и так далее

С одной стороны, выбор первоначального макета приложения позволяет пусть немного, но сократить время на то, чтобы накидать на главную форму необходимые компоненты и создать минимальный набор методов, например, для навигации в приложении, а с другой стороны – в случае необходимости довольно быстро разобраться с основами управления всё тех же компонентов на форме. Например, выбрав последний вариант приложения (Tabbed with Navigation) вы можете тут же его собрать, посмотреть, как Delphi-приложение работает в Android и, если потребуется, то быстро понять как управляться с TTabControl, переключаться с таба на таб, выходить из приложения при нажатии кнопки return и так далее. В общем, если вы только начинаете разбираться с FMX – не поленитесь попробовать все типы приложений из предложенного набора (само собой, исключая первое – Blank Application, так как там смотреть нечего).

Читайте также:  Tts настройки в телефоне

Итак, я выбрал из предложенного набора третий вариант, который называется “Header/Footer”. В Header я разместил две кнопки TButton и установил у них следующие свойства:

  • Первая кнопка:
    • Align = Left;
    • StyleLookup = “escapetoolbutton”;
    • Text = “Выход”
  • Вторая кнопка:
    • Align = Right;
    • StyleLookup = “playtoolbutton”;
    • Text = “Играть”

Так как будущее приложение подразумевает, как минимум три стадии работы: выбор видов задач, решение задач и просмотр результатов, то я положил на главную форму компонент TTabControl, в котором создал три таба и установил свойство Align в значение Client, то есть растянул компонент по всему доступному месту на форме. После этого, не долго думая (а стоило бы) я накидал на таб “Задачи” несколько чек-боксов у которых установил следующие свойства (одинаковые для всех):

  • Align = Top
  • Margins.Left = 20
  • Margins.Top = 20

Также я положил на форму компонент TSpibBox для выбора количества задач в тесте и, в конечном итоге, получил вот такой вид формы в режиме просмотра “Master”:

Чтобы представить, как будет выглядеть приложение, например, на телефоне с экраном в 4″ достаточно выбрать в редакторе формы в списке View необходимый режим просмотра:

Здесь же Вы можете и посмотреть, как будет выглядеть приложение при различной ориентации экрана. После того, как вы выбираете в списке View очередной вид, в ресурсы приложения добавляется новая форма:

Для каждого вида формы вы можете установить свое расположение компонентов. Например, ниже представлен вид приложения для Android c 4-х и 5-ти дюймовыми экранами:

Если, находясь в режиме просмотра, например, Android 4” Вы попытаетесь удалить любой компонент с формы, то получите вот такую ошибку:

Для удаления компонентов с форм достаточно перейти в режим просмотра “Master”.

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

Доступ к компонентам формы на любых экранах

При разработке приложений для Windows с небольшим количеством компонентов, мы как-то особенно не задумываемся на тем уместится ли 2 метки и 5 чек-боксов с текстом в 20-30 символов на главной форме. Само собой, что сейчас надо умудриться найти у обычного пользователя ПК монитор с диагональю менее 15” и максимальным разрешением 640х480 и менее. И эта уверенность может сыграть с нами злую шутку при разработке под Android. Возьмем, к примеру, макет приложения, который я первоначально накидал. Да, компоненты, прекрасно уместились на экране телефона в 5”, но теперь возьмем этот же телефон, развернем экран и попробуем добраться, например, до редактора количества задач. Этого сделать не получится, так как редактор будет находиться за пределами видимости. Поэтому, лично для себя я решил:

чтобы даже на экране с диагональю 1,5” пользователь мог пролистать список компонентов до необходимого. Благ, что с помощью Delphi подправить, в случае необходимости, макет формы не составляет большого труда. Просто переходим в режим Master, добавляем на таб “Задачи” компонент TScrollBox с вкладки Layouts, растягивая его по всему доступному пространству. Затем, в окне Structure выбираем компоненты, расположенные на табе и перетаскиваем их на ScrollBox. Всё. Теперь даже на самом маленьком экране пользователь сможет прокрутить список компонентов и добраться до необходимого. Проверить это можно также в режиме просмотра, например, Android 4”.

Видимость компонентов при наборе текста

Еще один момент на который стоит обратить внимание – это видимость компонентов, например, Edit’ов в момент, когда Вы добавляете в него текст. Продемонстрировать эту проблему можно, используя всё тот же макет, разработанный в начале. Попробуйте запустить приложение и попробовать записать какое-нибудь число в SpinText. Вы увидите, что экранная клавиатура полностью перекрывает компонент и вы не можете увидеть, что вы пишете. Проскролировать форму в момент набора текста вы также не можете, так как, в этом случае, компонент теряет фокус и экранная клавиатура исчезает.

В попытках решения этой проблемы я нашел на сайте http://fire-monkey.ru/ замечательный модуль под названием vkbdhelper.pas, который решает указанную выше проблемы для Android. Просто подключаем этот модуль к проекту и забываем о проблеме. Теперь, при появлении экранной клавиатуры вы всегда будете видеть, что вы пишете в компоненте и в каком компоненте вы пишите.

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

Исходники к этой статье не прилагаются, так как показывать пока особенно нечего.

Источник

Adblock
detector