POS 应用程序的打印机方法调用在发布和调试环境中表现不同

Printer method calls for a POS app behave differently for release and debug environment

我已经被这个问题困扰了将近一个星期了。我面临的问题是,当我将应用程序设置为调试模式时,打印机功能运行良好;他们 return 正确的回答和示例文本是从 POS 的热敏打印机打印的。

但是,当我将应用程序切换到发布模式时,情况开始有所不同。为了让您了解正在发生的事情,这里是正确的方法调用和响应。您可以看到发送到 OS 的请求是正确的,并且 return 值也是正确的。

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 return 当前温度 (getTemperature()),getMaxTemperature() returns 状态 (getStatus())。结果,打印机模块全乱了,打印机不工作了。

起初,我认为这是一个 proguard 映射问题(可能仍然是)但是,即使禁用了 proguard 和 minify 也会发生同样的情况。

任何人都可以帮助指导我或让我了解这里可能发生的事情吗?

谢谢

尝试在连接中添加一些延迟。

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

后来我解决了这个问题。原来 proguard 配置没有排除一些 类.

因此,下次您的应用在发布模式和调试模式下的行为完全不同时,请先检查您的混淆器配置。

谢谢