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

Проблемы запуска приложений Delphi 11 на Android 14: возможные причины и решения

Delphi , Программа и Интерфейс , Приложение своё

 

В последнее время разработчики, использующие Delphi 11, сталкиваются с проблемами при запуске своих приложений на устройствах Android 14. Несмотря на то, что приложения успешно работают на более ранних версиях Android, на Android 14 возникают различные несоответствия и ошибки. В данной статье мы рассмотрим наиболее распространенные причины этих проблем и предложим возможные решения.

Проблема 1: Некорректная обработка времени с AM/PM

Одна из наиболее часто встречающихся проблем – некорректная обработка строк даты и времени, содержащих AM/PM, при использовании функции StrToDateTime. Как показывает обсуждение на форуме, на Android 14 строка типа '02/08/25 6:23:18 AM' приводит к ошибке "‘2/6/25 10:0:00 PM' is not a valid date and time’", в то время как строка с 24-часовым форматом, например '02/06/25 22:00:00', конвертируется без проблем.

Причина:

Проблема, скорее всего, связана с региональными настройками устройства Android 14. Формат времени, ожидаемый StrToDateTime, может не совпадать с форматом, используемым на устройстве. В частности, могут быть различия в интерпретации AM/PM.

Решение (предложенное):

Рекомендуется проверить значения FormatSettings.ShortTimeFormat, FormatSettings.TimeAMString и FormatSettings.TimePMString. Эти свойства определяют формат отображения времени и AM/PM на устройстве. Изменение этих настроек может помочь адаптировать StrToDateTime к региональным настройкам Android 14.

Пример кода (Object Pascal):

uses
  System.SysUtils, System.Types;

procedure TestDateTimeConversion;
var
  FmtStngs: TFormatSettings;
  DateTimeField: TDateTime;
  BooleanField: Boolean;
begin
  FmtStngs := TFormatSettings.Create();
  FmtStngs.DateSeparator := '/';
  FmtStngs.ShortDateFormat := 'm/d/yy';
  FmtStngs.TimeSeparator := ':';
  FmtStngs.LongTimeFormat := 'h:nn:ss AMPM'; // Попробуйте изменить этот формат

  // Попытка конвертации с AM/PM
  BooleanField := TryStrToDateTime('02/09/25 11:21:03 AM', DateTimeField, FmtStngs);
  ShowMessage('AM/PM Conversion: ' + BoolToStr(BooleanField, True));

  // Попытка конвертации с PM
  BooleanField := TryStrToDateTime('02/09/25 11:21:03 PM', DateTimeField, FmtStngs);
  ShowMessage('PM Conversion: ' + BoolToStr(BooleanField, True));

  // Конвертация с 24-часовым форматом
  BooleanField :=  TryStrToDateTime('02/09/25 23:21:03', DateTimeField, FmtStngs);
  ShowMessage('24-hour Conversion: ' + BoolToStr(BooleanField, True));

  FmtStngs.Free;
end;

Альтернативное решение:

Вместо использования StrToDateTime можно попробовать использовать более гибкий подход, например, парсинг строки даты и времени вручную. Это позволит вам точно контролировать процесс конвертации и адаптировать его к конкретным региональным настройкам Android 14. Можно использовать функции Pos, Copy, и StrToInt для извлечения компонентов даты и времени из строки и последующего формирования TDateTime. Хотя это и более сложный подход, он может быть более надежным в долгосрочной перспективе.

Пример (псевдокод):

// Предполагается, что строка даты и времени имеет формат MM/DD/YY HH:MM AM/PM
function ParseDateTime(DateTimeString: string): TDateTime;
var
  Month, Day, Year, Hour, Minute: Integer;
  AMPM: string;
begin
  // Извлечение месяца, дня, года, часа, минуты и AM/PM из строки
  // ... (реализация парсинга) ...

  // Преобразование извлеченных значений в TDateTime
  Result := EncodeDateTime(Year, Month, Day, Hour, Minute, 0, 0);

  // Корректировка времени в зависимости от AM/PM
  if AMPM = 'PM' and Hour < 12 then
    Inc(Hour, 12);
  else if AMPM = 'AM' and Hour = 12 then
    Hour := 0;

  Result := EncodeDateTime(Year, Month, Day, Hour, Minute, 0, 0);
end;

Проблема 2: Ошибки при сборке и запуске в Delphi 12 Trial

При попытке запуска приложения Delphi 11 на Android 14 с использованием Delphi 12 Trial возникают ошибки сборки, связанные с отсутствием файлов annotation-1.2.0.dex.jar и asynclayoutinflater-1.0.0.dex.jar.

Причина:

Эти ошибки обычно указывают на проблемы с зависимостями Android SDK. Возможно, Delphi 12 Trial не может найти необходимые библиотеки в вашем Android SDK. Это может быть связано с неправильной настройкой SDK, устаревшей версией SDK или проблемами с кэшированием.

Решение (предложенное):

Предложенное решение – обновление до более новой версии Delphi (Delphi 12.2). Однако, даже в этом случае, может потребоваться корректировка кода для поддержки поздних версий Android.

Альтернативное решение:

  1. Проверьте настройки Android SDK: Убедитесь, что в настройках Delphi правильно указан путь к вашему Android SDK.
  2. Обновите Android SDK: Установите последнюю версию Android SDK, соответствующую Android 14. Вы можете использовать Android Studio для управления SDK.
  3. Очистите кэш SDK: Попробуйте очистить кэш SDK и пересобрать проект.
  4. Проверьте зависимости: Убедитесь, что все необходимые зависимости для вашего проекта правильно указаны и доступны.

Общие рекомендации:

  • Используйте последние версии Delphi: Как показала практика, обновление до последних версий Delphi обычно решает многие проблемы совместимости с новыми версиями Android.
  • Тщательно тестируйте на разных устройствах: Важно тестировать ваше приложение на различных устройствах Android 14, чтобы выявить и устранить любые проблемы.
  • Обращайтесь к документации и форумам: Официальная документация Delphi и форумы разработчиков являются отличным источником информации и помощи при решении проблем.
  • Используйте TryStrToDateTime: При работе со строками даты и времени используйте функцию TryStrToDateTime вместо StrToDateTime. TryStrToDateTime возвращает False в случае ошибки, что позволяет избежать исключений и более корректно обрабатывать некорректные данные.

В заключение, проблемы с запуском приложений Delphi 11 на Android 14 часто связаны с региональными настройками и устаревшими зависимостями. Обновление Delphi, тщательная настройка SDK и использование альтернативных методов парсинга даты и времени могут помочь решить эти проблемы и обеспечить стабильную работу ваших приложений на новых устройствах Android.

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

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


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

Получайте свежие новости и обновления по 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 06:26:16/0.00655198097229/0