Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Отладка в Android-приложениях на Delphi: решение проблемы с `log.d()` в Delphi-Berlin Update-2

Delphi , Программа и Интерфейс , Процессы и Сервисы

Отладка в Android-приложениях на Delphi: решение проблемы с log.d() в Delphi-Berlin Update-2

При разработке приложений под Android с использованием Delphi часто возникают вопросы, связанные с отладкой. Одна из проблем, с которой сталкиваются разработчики, заключается в использовании метода log.d() в сервисах Android. В обновлении Delphi-Berlin Update-2 при попытке использовать log.d() происходит необходимость в подключении модуля FMX.Types, что в свою очередь может привести к сбою всего приложения.

Проблема

Разработчики, использующие Delphi-Berlin Update-2, сталкиваются с трудностями при попытке использовать log.d() в сервисах Android. Это связано с тем, что log.d() требует подключения модуля FMX.Types, который, в свою очередь, может вызвать сбой приложения. Попытки извлечь раздел логов из FMX.Types не увенчались успехом, и разработчики ищут альтернативные способы решения проблемы.

Альтернативный ответ и Подход к решению

Разработчикам предлагается обратиться с сообщением о дефекте в библиотеки, если они считают, что проблема кроется именно в них. Также рекомендуется предоставлять минимально воспроизводимый пример (mcve), чтобы облегчить процесс диагностики. В случае с Delphi Tokyo наблюдается та же проблема на реальном устройстве LG-LS997.

Подтвержденное решение

Для решения проблемы можно использовать встроенную функцию LOGI, следующим образом:

uses Androidapi.Log;

procedure MyProcedure(msg: String);
var
  M: TMarshaller;
begin
  LOGI(M.AsUtf8(msg).ToPointer);
end;

Дополнительная информация: При включении любого модуля FMX в сервис возникает сегментация. Log.d вызывает LOGI, который, в свою очередь, использует функцию Android NDK __android_log_write. Также имеется __android_log_print для форматирования, но она не обернута. Рекомендуется форматировать сообщения внутри Delphi и вызывать __android_log_write.

Функция LOGI определена для вызова __android_log_write с уровнем логирования ANDROID_LOG_INFO. Существуют аналогичные обертки для уровней WARN, ERROR и FATAL в виде функций LOGW, LOGE и LOGF.

Дополнительно были созданы обертки для остальных уровней логирования (не тестировались, уровень ANDROID_LOG_UNKNOWN исключен):

function LOGDEF(Text: MarshaledAString): Integer;
begin
  Result := __android_log_write(android_LogPriority.ANDROID_LOG_DEFAULT, 'default', Text);
end;

function LOGV(Text: MarshaledAString): Integer;
begin
  Result := __android_log_write(android_LogPriority.ANDROID_LOG_VERBOSE, 'verbose', Text);
end;

function LOGDBG(Text: MarshaledAString): Integer;
begin
  Result := __android_log_write(android_LogPriority.ANDROID_LOG_DEBUG, 'debug', Text);
end;

function LOGS(Text: MarshaledAString): Integer;
begin
  Result := __android_log_write(android_LogPriority.ANDROID_LOG_SILENT, 'silent', Text);
end;

Заключение

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


Примечание: В статье использованы примеры кода на Object Pascal, которые соответствуют основной тематике сайта и запросу на решение проблемы, связанной с Delphi и Pascal.

Создано по материалам из источника по ссылке.

При разработке Android-приложений в Delphi возникла проблема с использованием метода `log.d()`, требующего подключения модуля `FMX.Types`, что может вызвать сбой приложения, и предложено решение через использование функции `LOGI` без подключения указанно


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 11:06:32/0.0061759948730469/0