Важно (9.07.22)

Если картинки в постах не отображаются, зайдите в блог через прокси. РКН заблокировал поддомены blogger.com на которые загружались картинки.

понедельник, 12 июля 2021 г.

[Android Service] Добавление/удаление сервиса в FMX

Добавление сервиса в проект приложения.


Примечание 1. Перед добавлением сделайте сборку (Build для Android 32-bit и Android 64-bit) проекта сервиса, чтобы сгенерировать двоичные файлы.

1. Откройте проект приложения

Примечание 2. Обязательно проверьте, чтобы в проектах Сервиса и Приложения не было совпадающих по имени основных юнитов (файлы *.pas). В противном случае, после добавления проекта сервиса, содержащего файл с именем, совпадающим с файлом из приложения возникнет ошибка добавления юнита (т.е. возникнет конфликт). Нельзя чтобы форма в приложении называлась «Unit1.pas» и при этом data module в сервисе имел название «Unit1.pas».
 

2. Выберите платформу «Android 32-bit», щёлкните правой кнопкой мышки и выберите пункт «Add Android Service».



3. Откроется мастер добавления сервиса



Предлагается два варианта добавления службы:

  • Автоматический поиск файлов сервиса в папке сервиса
  • Выбор файлов сервиса вручную

4. Выбираем подходящий нам вариант и жмём кнопку «Next»

5. В зависимости от выбранного варианта добавления сервиса, следующее окно будет предлагать к заполнению разные поля:
 

  • Для варианта автоматического добавления сервиса.



Нужно указать путь до папки, в которой лежит проект сервиса. После заполнения поля, жмём кнопку «Next». После этого мастер поищет все необходимые файлы в указанной папке и выведет список найденных файлов (как на скриншоте ниже).



Жмём кнопку «Finish».

 

  • Для варианта выбора файлов сервиса вручную



Примечание 3. Все поля подписаны, так что сложностей тут не должно возникнуть.
Примечание 4. Указывать нужно файлы для 32-bit, чтобы потом не возникло проблем со сборкой приложения под 64-bit.

После заполнения полей, жмём кнопку «Finish».

 

Проект сервиса будет добавлен в приложение:

  • lib <имя_сервиса> .so - добавится в Deployment Manager
  • libProxyAndroidService.so – добавится в Deployment Manager (этот файл используется всеми службами, добавленными в приложение)
  • <имя_сервиса> .jar – добавится в секцию «Libraries» выбранной платформы в Project Manager (блок Projects)
  • <имя_сервиса>.pas – добавится в Project Manager
  • В манифесте приложения, во время сборки приложения, будет автоматически добавлена запись для сервиса.


Примечание 5. Добавлять сервис в приложение нужно только 1 раз. Т.е. добавив сервис к 32-bit'ой платформе, не нужно делать тоже самое для 64-bit’ой версии, всё подхватится автоматически.

Как удалить из проекта приложения добавленный ранее сервис. 

1. Выберите целевую платформу (как правило это Android 32-bit), нажмите правой кнопкой мышки и выберите пункт «Remove Android Service»



2. Появится мастер удаления сервисов.



3. Выберите сервис и нажмите кнопку «Next»

4. Мастер отобразит список файлов для удаления.



Нажмите кнопку «Finish»
 

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

 

Документация: Development Workflow for Android Services