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

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

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

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

Настройка Delphi для разработки Android

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

Установка JDK, SDK и NDK для Delphi

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

Android SDK, NDK и JDK установились успешноНажмите 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.Создаем проект на Delphi для Android приложения

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

Выбираем шаблон проекта для Android-приложения на Delphi

Создаем папку проекта, я рекомендую поместить её в каталог C:\work и назвать HelloAndroidСоздаем папку проекта для Android-приложения на Delphi

Внесем небольшие изменения в наше приложение. В шапке формы напишем Привет Android. Для этого нажмём на метку HeaderLabel на форме и слева внизу найдём параметр Text.

Изменим его значение на  Привет Android — и увидим, что изменился текст на форме.

Изменение шапки приложения Android

Запустите эту программу под Windows (нажмите F9) — вы увидите обычную форму. Программа работает.

Переключим целевую платформу для компиляции приложения на Android в правом верхнем углу экрана (дважды щёлкните названии платформы).

Переключим компилятор на работу с Android

Без телефона запустить приложение не получится. Давайте его настроим.

3. Настройка телефона для разработки Android

К сожалению, каждый телефон настраивается по-своему. Я расскажу общую схему на примере моего Xiaomi Redmi Note 4.

Для начала нужно включить режим разработчика. Необходимо зайти в Настройки — О телефоне и семь раз тапнуть пункт — версия MIUI (для телефонов Huawei, например, нужно сделать следующее: окне «О телефоне» необходимо не менее 7 раз нажать по строчке «Номер сборки»).

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

Включение режима для разработчиков

В меню разработчиков нужно включить кнопку Отладка по USB и затем Установка через USB. (Нюанс: для Redmi Note 4 в этот момент должна быть вставлена SIM-карта. После включения этих опций симку можно вынуть).

Включение отладки и установки через USB

На других телефона процедура выглядит примерно также. Для вашей модели телефона инструкцию включения режим разработчика ищите в Google по запросу: «как включить режим разработчика для *название телефона*» или «как включить отладку по USB для *название телефона*».

После включения этих опций берёте хороший USB-кабель (например, которым заряжаете ваш телефон) и подключаете к компьютеру. На Windows 10 драйвера не потребовались, телефоны Android система определяла сама. Для Windows 8 потребовалось скачать ADB-драйвера для конкретной модели телефона. Они также гуглятся. Скачать подошедший мне adb-драйвер можно с нашего сайта.

При подключении устройства телефон может попросить разрешить отладку через USB для конкретного компьютера. Ставим галку и соглашаемся, нажав ОК. Если не успели, вытаскиваем кабель и вставляем снова.

Разрешить отладку через USB при подключении устройства AndroidНо может и не попросить, зависит от модели. Теперь важно, чтобы телефон увидела Delphi.
Скорее всего, после успешного подключения среда разработки подхватит устройство автоматически. Если этого не произойдёт, попробуйте нажать кнопку Refresh devices (обновление устройств). Справа от надписи Android вы увидите название вашего смартфона.

Подключение смартфона Android к Delphi

Всё готово к запуску приложения.

4. Запуск приложения на Android

Нажмите F9 (зелёный треугольник в панели управления) для запуска приложения.

Пока программа будет компилироваться, внимательно следите за вашим устройством Android. После создания файла apk (установочного файла Android-приложения) на компьютере он будет передан на ваш смартфон. Например, мой Xiaomi Redmi Note 4 даёт только 10 секунд на подтверждение установки. Если вы не уложитесь в это время (не успеете нажать Установить), установка будет отклонена и её нужно будет запускать заново, нажав F9 в Delphi.

К счастью, можно запомнить этот выбор для конкретного приложения. Ставьте галку (на скриншоте я ещё это не сделал) и нажимайте Установить, когда увидите подобный экран:

Разрешить установку приложения Android

Подождите ещё немного — и приложение запустится! Ура!

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

НЮАНС. Если один раз приложение установилось, а потом появляется ошибка, попробуйте удалить его с устройства. Это может быть связано с изменениями настроек телефона, подключением телефона к другому компьютеру и т.д.

Приложение на экране смартфонаПока приложение совсем простое. Усовершенствуем его — добавим ввод данных.

5. Ввод данных в Android-приложении

Добавьте на форму текстовое поле, для этого найдите компонент TEdit в палитре компонентов (воспользуйтесь поиском, как показано на скриншоте) и перетащите его в верхнюю часть формы.

Добавление текстового поля

Под ним добавьте компонент кнопки TButton, как в предыдущем уроке. На самой кнопке напишите слово Приветствие, использовав его поле Text в инспекторе объектов. Ваш экран будет выглядеть примерно так: Программа с кнопкой и полем ввода

И для текстового поля, и для кнопки измените в инспекторе объектов следующие свойства:

  • Align = Top
  • Height = 44

Элементы прижмутся к верхней части формы и станут в 2 раза выше, это сделает работу с программой удобнее (особенно на Android). Выглядеть в среде разработки это будет вот так:

6. Нажатие кнопки

Теперь напишем обработчик события — нажатия кнопки. Для этого дважды щёлкните на кнопке с надписью Приветствие — откроется редактор кода. Впишите (или скопируйте с этой страницы) туда следующий текст:

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

Экран должен выглядеть так:

Код на экране Delphi

Кстати, чтобы обратно переключиться на режим редактирования формы (окна приложения), нажмите Design в правом нижнем углу текстового редактора.

Переключите целевую платформу разработки на Windows и запустите приложение (F9)

Переключить платформу разработки на Windows

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

Посмотрим, как программа работает под Windows. Введите текст и нажмите Приветствие.


Запуск программы под Windows в Delphi
Отлично! Теперь переключитесь обратно на Android и запускайте вашу программу на устройстве. Там тоже всё работает:

Пример программы для Android, написанной на DelphiПоздравляем! Ваше приложение заработало на смартфоне! (Если не заработало, пишите вопросы в комментариях).

Домашнее задание: поменяйте надпись на метке Привет Android на Введите своё имя  и измените цвет метки (свойство TextSettings — Font — Style — fsBold = True).

Комментарии 52

  • Здравствуйте. Спасибо за статью, очень интересно было узнать, что на современном Delphi можно создавать Android-приложения. Раньше Delphi была любимой средой. Такие вопросы, можно ли писать код на Kotlin и на сколько серьезные мобильные приложения можно создавать таким образом на Delphi?

    • Рад, что вам понравилось. На Kotlin не получится, в Delphi будет работать только Pascal (вернее, его разновидность). К сожалению, любое мультиплатформенное решение сейчас вряд ли подойдёт для сложных разработок, потому что каждая платформа (Android, iOS, Windows) старается перетащить программистов в свою среду. Конкретно на Delphi мне удавалось взаимодействовать с устройством (например, выполнять звонки), работать со встроенной базой данных SQLite и другие несложные задачи. В итоге, нужно смотреть от целей и задач.

    • Доброго времени суток! Подскажите пишу программу простую, под Android нужно из memo текст (name.тхт) во внутренней или на SdCard в свою папку. У меня выдаёт при сохранении Cannot create file «/name.txt». Not a directory. Заранее спасибо!

  • Здравствуйте!
    Подскажите пожалуйста почему у меня установился 32-разрядный Delphi
    вместо 64-разрядного ?

  • Попытка сделать все по Вашей статье заканчивается ошибкой — [PAClient Error] Error: E2564 Could not find program, ‘C:\bin\JarSigner.exe’

  • Во… пролезло. 🙂
    Повторюсь… даже каталога bin не существует, если разговор о машине — C:\bin…
    И вообще, где можно что-то почитать про этот пакет. А то все, что делал на D7 — теперь на 10-ке… в топку…

  • Сергей Садков, скажите пожалуйста, можно ли работать с Wi-Fi, а именно
    подключаться к определённой точке доступа непосредственно из кода и отключаться от неё? Заранее, спасибо! И с уважением, Ростислав..

  • Программирование на Delphi. Часть 2 опубликована еще 17 января А продолжение ожидается?

  • Вопрос по использованию БД. Есть желание из Андроидприложения обратиться к БД, которая находится в Интернете (на сервере). Планирую использовать FireDAC (кстати — можете сказать что-то плохое про этот компонент и его работу с PostGres. Компоненты коннектятся к удаленной БД. А соединение шифруется? Или пароли передаются в открытом виде?
    1) Т.е. могут перехватить пароль ?
    2) Запросы, которые я посылаю к БД — их могут перехватить ?

    • Подключался к SQLite в помощью FireDAC, всё было ок. Соединение можно зашифровать, TSL/SSL

      • Здравствуйте Сергей можно ли хорошую мобильную программу для дипломной работы на Rad studio ?
        Если да то какое бы приложение подошла бы для создание на Delphi?

  • Сергей, здравствуйте. Я хотел бы спросить у вас, как у специалиста. Дело в том, я тоже пробую разработать мобильное приложение. У меня возникла наверное банальная но всё-таки очень странная проблема. Когда я создаю Multi-Device Application — Delphi и пытаюсь на форму добавить изображение, у компонента TImage попросту отсутствует свойство Picture (и расположен компонент не в привычной Additional, а почему-то в Shapes). Причём, если создать обычный проект Delphi, Image расположен где надо и со всеми нужными свойствами прекрасно функционирует. У меня Rad Studio 10.3, но такой же коллапс был и на версии 10.2( не однократно переустанавливал). Если вы с таким сталкивались или может быть слышали, это глюк или так и должно быть? Как можно решить эту проблему? Может можно каким-то другим компонентом добавить изображение на форму? Заранее огромное спасибо.

  • Сергей, здравствуйте. Хотел поинтересоваться. Такая ситуация: на форме 1 в переменную заносится значение, на форме 2 из этой переменной его нужно считать, форма 2 видит переменную, описанную в форме 1. Обе формы связаны. Но считывать значение форма 2 не хочет, выдаёт, что в переменной 0. Хотя обе формы связанны в uses и переменная описана глобально. Как решить данную проблему?

    • Здравствуйте! Тут, к сожалению, надо код смотреть и искать ошибку. В рамках комментария к статье помочь не смогу

      • Пожалуйста, не могли бы вы уделить мне немного вашего внимания и времени?. Если да, то как с вами можно связаться?
        Заранее, огромное спасибо.

  • Сергей, к вам такой вопрос. Если у меня бесплатная версия turbo delphi,
    возможно ли на нее установить sdk java и android sdk или эти два пакета устанавливаются только на новых версиях delphi ?

  • Напишите, пожалуйста, статью, как делать бандлы (32 и 64-бит) и заливать их на Google Play.

  • Здравствуйте, вопрос не по теме. Во время ЧП студенты учатся онлайн, поэтому вообще сущетвует среда Дельфи для смартфонов?

  • Друзья! Не заморачивайтесь с Делфи под андроид. Ставьте БЕСПЛАТНУЮ андроид-студию, учите джаву или котлин, и будет вам счастье.

    • В статье рассматривается универсальная среда для разработки под Windows, Mac OS, iOS и Android. Вы предлагаете вместо одной универсальной среды изучать кучу специализированных. В чем тут счастье?

  • Здравствуйте, случайно удалил из проекта целевую платформу android64, ума не приложу как ее вернуть обратно. Для Google play нужна 64 версия. Спасибо

  • Здравствуйте, пытаюсь скомпилировать на смартфон проект с delphi, выдает ошибку! Подскажите?

  • Здравствуйте, установил все по инструкции Windows 32 и 64 бит, Android Sdk. Так вот при создании мульти проекта доступно Windows 32, 64 бит и Андроид только 32 бит. Что нужно сделать чтоб было Андроид 64 бит?

  • Здравствуйте, Сергей! Подскажите, пожалуйста, это нормально, что папка с проектом «весит» 500 Мб?

  • Delphi 10.2
    На телефоне выскакивает сообщение: «Это приложение было создано для более старой версии Android и может работать со сбоями.» Попытка обновится в SDK Manager мне просто всё сломала: малопонятные ошибки проект не собирается.

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

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

    Ну, или посоветуйте вменяемую литературу по мобильной разработке на Delphi, а то с той, что находится в гугле, как-то не очень всё: «тяп-ляп хелоуворд, дальше топетришь сам…» 🙁

  • Извиняюсь, за даблпост, но в догонку — ресурсы типа:
    «embarcadero.com/ бла бла бла /adding_an_android_sdk.html» я, конечно, изучал, и даже перепробовал огромное количество комбинаций build-tools’ов и SDK Platform, и даже ставил сторонний adb; но в конце концов просто полностью переустановил Delphi.
    Очень нужно нормальное руководство, пожалуйста.

  • Здравствуйте.
    Не отображается телефон. Хотя ADB драйвер установился. Режим отладки включил, все как у вас написано. Rad Studio 10.4.2. Дома главное видит, а на работе нет. Что можно сделать?

  • Получается Паскаль в Яву компилится?

    • Это нормально. нынче все языки под капотом имеют другие языки, хотя всё в конце концов работает на ассемблере. тем более, что паскаль сильно расширился и имеет в своём арсенале почти всё что есть в с++. А учитывая наличие c++ builder с тем же функционалом, я подозреваю, что они в c++ с использованием ndk мутять.

  • ДД. Не подскажете: создал приложение и тестирую на андроиде. Но некоторые компоненты не обновляются. Например, изменил название кнопки, но в андроиде не обновился, показывает старое имя. А код обновляется. Если что то добавить, то они появляются. Как будто кэш хранит. Удалял приложение, но не помогает.

  • Добрый вечер. У меня выходит в делфи ошибка [Exec Error] The command «»C:\Program Files\Java\jdk1.8.0_192\bin\KeyTool.exe» -genkey -v -keystore «C:\Users\netdoom38\AppData\Roaming\Embarcadero\BDS\20.0\debug.keystore» -storepass android -alias androiddebugkey -keypass android -dname «cn=Unnamed, ou=Mobile Organization, o=Embarcadero Technologies, l=San Francisco, s=California, c=US» -keyalg RSA -keysize 2048 -validity 10000″ exited with code 3.
    Что делать?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.