我一直困扰这个问题近一个星期。我面临的问题是,当我将应用程序设置为调试模式时,打印机功能运行良好。它们会返回正确的响应,并从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也是如此。
任何人都可以帮助指导我或让我了解这里可能发生的事情吗?
谢谢
答案 0 :(得分:0)
尝试在连接中添加一些延迟。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// put your function here.
}
}, 2000);
答案 1 :(得分:0)
我后来能够解决这个问题。事实证明,proguard配置并未排除某些类。
因此,下次您的应用在发布和调试模式下的行为完全不同时,请首先检查您的proguard配置。
谢谢