shtrih-m / fr_drv_ng_examples

Примеры использования https://github.com/shtrih-m/fr_drv_ng
10 stars 2 forks source link

Происходит exception при попытке печати на Smartpos mini #12

Closed ola-skorp closed 5 years ago

ola-skorp commented 5 years ago

Происходит exception при попытке печати на Smartpos mini Вот стек: https://gist.github.com/ola-skorp/d442864dbdbee40c7015841ad0f9436a Вот строка, на которой происходит исключение: SmartPosNative() Файл libclassic_fr_drv_ng.so в проекте есть image image image image Ваше тестовое приложение открыло смену, но при печати чека попеременно выдаёт -8 Unknown error и 64: KKT: Неверное округление итога чека То есть в тестовом приложении не возникает такого же exception'а как в нашем. В связи с этим у меня вопрос: что я могла сделать не так? Я уже скопировала все файлы библиотеки в тестовом проекте, но ничего не изменилось

ola-skorp commented 5 years ago

typealias SmartPosNative = classic_interface

swex commented 5 years ago
  1. смущает только что у вас в нативных библиотеках есть gnustl_shared.so. Этот рантайм устарел, его даже уже в документации нет.
  2. проверьте что у вас все aar, jar и so из актуальных сборок.
  3. если не поможет - давайте минимальный проект где воспроизводится
ola-skorp commented 5 years ago

Я взяла все файлы из примера https://github.com/shtrih-m/fr_drv_ng_examples/tree/master/classic_fr_drv_ng_android_example

swex commented 5 years ago

Я взяла все файлы из примера https://github.com/shtrih-m/fr_drv_ng_examples/tree/master/classic_fr_drv_ng_android_example

В примере файлы не актуальные, а какой-то срез. Возьмите все файлы из последней сборки.

ola-skorp commented 5 years ago

Сделала приложение для теста - ошибка не воспроизводится. Может ли что-то конфликтовать с библиотекой? Я удалила всё из jniLibs и скопировала из тестового проекта, но ошибка продолжает воспроизводиться, тогда как с теми же файлами на тестовом приложении она не воспроизводится

swex commented 5 years ago
  1. какая железка, какая архитектура?
  2. покажите актуальное дерево jniLibs
  3. ну и md5 наших so, aar и jar :smiley:
  4. может в adb что-то пишется выше стектрейса приложения? Возможно туда ругается линкер и есть какие-то подробности ошибки
ola-skorp commented 5 years ago

image

ola-skorp commented 5 years ago

SHTRIH-SMARTPOS-F_MINI

ola-skorp commented 5 years ago

Как добыть md5?

swex commented 5 years ago

md5 снять можно множеством утилит. md5sum, например. Не знаю чем могу еще помочь. Попробуйте перетащить свой код в рабочий проект, может так выяснится в чем дело. Идеально было бы если бы у вас был проект в котором воспроизводится проблема.

ola-skorp commented 5 years ago

Причина в двух библиотеках image Вот ссылка на проект https://drive.google.com/open?id=1fAJjzDzdPhalXF7ckUkVJDwbDICl75Ij

ola-skorp commented 5 years ago

Библиотеки payme и ingenico

swex commented 5 years ago

Подтвердились опасения из первого поста. Эти ребята собирают свои библиотеки с устаревшим NDK. как проверить:

  1. Разархивируем их aar
  2. Переходим в директорию с .so

objdump -x *|grep -i NEED NEEDED libft_ePayPOSNDK.so NEEDED liblog.so NEEDED libc.so NEEDED libm.so NEEDED libstdc++.so NEEDED libdl.so VERNEED 0x000013fc VERNEEDNUM 0x00000001 NEEDED liblog.so NEEDED libstdc++.so NEEDED libm.so NEEDED libc.so NEEDED libdl.so


3. вместо `libstdc++.so` должен быть `libc++_shared.so`

Вот [здесь](https://developer.android.com/ndk/guides/cpp-support) видно что тулчейн GNU уже не поддерживается и объявлен устаревшим уже как больше года.
В одном процессе не могут работать 2 разных c++ рантайма.
Необходимо обратиться к ним за разъяснениями думаю они могут пересобрать библиотеки с актуальным SDK.
ola-skorp commented 5 years ago

Я временно убрала из проекта payme и ingenico. Теперь вот такая ошибка https://gist.github.com/ola-skorp/3afacbeb583317df2c425bb1ef639d07

ola-skorp commented 5 years ago

Перезагрузка не помогла

swex commented 5 years ago

метод использует пароль. Посмотрите пример там сразу после создания объекта назначаются пароли. Ну и читайте доку на методы

ola-skorp commented 5 years ago

Как узнать пароль? Я добавила как в примере, но ошибка осталась

swex commented 5 years ago

Пароль узнать можно из таблицы 2, но для чтения таблиц нужен пароль администратора :). На то он и пароль... В настоящее время пароли не очень актуальны, т.к. между ККТ и оператором всегда высокоуровневый софт. Обычно используются пароли по умолчанию 1 для пользователя и 30 для администратора. Хорошо бы почитать общее руководство по работе с ККТ Попробуйте отменить от администратора, методом SysAdminCancelCheck

давайте заводить отдельные заявки для других проблем. Эту предлагаю закрыть