Введение: При разработке 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, добавив провайдер:
Важные замечания:
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
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.