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

Интеграция библиотеки startup-runtime в FMX-приложение для киосков: решение проблемы NullPointerException в Delphi

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

 

Введение: При разработке FMX-приложений для киосков и планшетов с принтерами и сканерами часто возникают сложности с интеграцией оборудования от разных производителей. В данной статье мы рассмотрим проблему, связанную с библиотекой startup-runtime, и предложим несколько решений.

Проблема: При попытке использовать FMX-приложение на киоске модели "Plus" возникает ошибка:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.HashMap android.hardware.usb.UsbManager.getDeviceList()' on a null object reference

Анализ проблемы:
1. Ошибка указывает на неправильную инициализацию USB-менеджера
2. В манифесте AAR-библиотеки обнаружены специфические настройки для startup-runtime
3. Библиотека не инициализируется автоматически в Delphi-приложении

Решение 1 (Рекомендуемое):
1. Создайте новый JNI-интерфейс, включающий библиотеку startup-runtime-1.1.1.jar
2. Вручную инициализируйте необходимые компоненты в коде приложения:

uses
  Androidapi.JNI.startup_runtime;

procedure TForm1.FormCreate(Sender: TObject);
var
  jConfigInitializer: JConfigFileInitializer;
  usb: JConUSB;
begin
  jConfigInitializer := TJConfigFileInitializer.Create;
  usb := TJConUSB.Create;
  usb.create(TAndroidHelper.Context);
end;

Решение 2 (Альтернативное):
1. Измените файл AndroidManifest.template.xml, добавив провайдер:

<application>
  <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="%package%.androidx-startup"
    android:exported="false">
    <meta-data
      android:name="com.e1.Comunicacao.ConUSB"
      android:value="androidx.startup"/>
  </provider>
</application>

Важные замечания:
1. Убедитесь, что в атрибуте android:authorities используется %package% вместо ${applicationId}
2. Не используйте атрибут tools:node="merge"
3. Проверьте, что в пути к файлам нет лишних пробелов

Диагностика: Для проверки работы библиотеки startup-runtime можно использовать следующий код:

function IsStartupRuntimeAvailable: Boolean;
begin
  try
    Result := TJBuildConfig.JavaClass.DEBUG;
  except
    Result := False;
  end;
end;

Заключение: Проблема связана с особенностями инициализации библиотеки startup-runtime в Delphi-приложениях. Рекомендуется использовать ручную инициализацию компонентов, так как это обеспечивает больший контроль над процессом.
При возникновении подобных проблем всегда проверяйте:
1. Соответствие версий библиотек
2. Правильность JNI-интерфейсов
3. Содержимое манифеста приложения

Дополнительные ресурсы:
1. Официальная документация по startup-runtime
2. Руководство по работе с JNI в Delphi
3. Примеры интеграции оборудования в FMX-приложения

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

Решение проблемы NullPointerException при интеграции библиотеки startup-runtime в FMX-приложение для киосков через ручную инициализацию компонентов или модификацию манифеста.


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

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




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


:: Главная :: Приложение своё ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-04 06:44:08/0.0054619312286377/0