Вызовы метода принтера для приложения POS ведут себя по-разному для среды выпуска и отладки - PullRequest
0 голосов
/ 10 сентября 2018

Я застрял с проблемой почти неделю. Проблема, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю приложение в режиме отладки, функции принтера работают хорошо; они возвращают правильные ответы, и образцы текста печатаются с термопринтера POS.

Однако, когда я переключаю приложение в режим выпуска, все начинает вести себя немного по-другому. Чтобы дать вам представление о том, что происходит, вот правильные вызовы методов и ответы. Вы можете видеть, что запрос, который идет к ОС, является правильным, и возвращаемые значения также являются правильными.

09-06 21:22:04.058 357-357/? D/LibPrinterService: PrinterService getStatus...
09-06 21:22:04.072 357-357/? D/LibPrinterService: PrinterService getStatus,status=0
09-06 21:22:04.072 6412-6432/com.company.newpos D/PAYSDK: [+] Print Status: 0
09-06 21:22:04.072 357-466/? D/LibPrinterService: PrinterService getMaxTemperature...
09-06 21:22:04.074 357-466/? D/LibPrinterService: PrinterService getMaxTemperature,max=70
09-06 21:22:04.074 6412-6432/com.company.newpos D/PAYSDK: [+] Print MaxTemp: 70
09-06 21:22:04.074 357-5733/? D/LibPrinterService: PrinterService getWidth...
09-06 21:22:04.076 6412-6432/com.company.newpos D/PAYSDK: [+] Print Width: 384
09-06 21:22:04.077 357-357/? D/LibPrinterService: PrinterService getTemperature...
09-06 21:22:04.082 6412-6432/com.company.newpos D/PAYSDK: [+] Print Temp: 32

Это правильный способ работы. Теперь, когда я переключаюсь в режим разблокировки. методы ведут себя по-разному. Метод getStatus() заставляет PrinterService возвращать текущую температуру (getTemperature()), getMaxTemperature() возвращает состояние (getStatus()). В результате модуль принтера все испортил, и принтер не работает.

Сначала я подумал, что это проблема с отображением Proguard (но она все еще может быть), но то же самое происходит, даже когда Proguard и Minify отключены.

Может ли кто-нибудь помочь мне или дать мне представление о том, что может происходить здесь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Я позже смог решить это. Оказывается, конфигурация proguard не исключает некоторые классы.

Так что в следующий раз, когда ваше приложение будет работать совершенно по-разному в режиме выпуска и отладки, сначала проверьте конфигурацию Proguard.

Спасибо

0 голосов
/ 10 сентября 2018

Попробуйте добавить задержку в соединении.

 new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            // put your function here.
        }
    }, 2000);
...