在堆栈溢出中似乎有无数关于此错误的报告。没有任何建议起作用。就我而言,它几乎与此堆栈溢出报告相同 SPRING
除了这种情况是在Android Studio中构建的Android中。它仅在带有proguard的发布模式下发生。 Proguard会以某种方式破坏它。是的,我在proguard中做了以下操作:
-keep class org.eclipse.paho.client.mqttv3.logging.JSR47Logger { *; }
-keep class org.eclipse.paho.** { *; }
我还解析了gradle下载的jar。我无法更新至1.2.1,因为根据开发人员的评论,该版本仅适用于最新版本的Android。如果我可以获取1.1.0的源代码,也许可以阻止它调用不存在的资源。
有人解决了这个问题,还是proguard / paho中的错误?
答案 0 :(得分:-1)
查看由发行版本(使用proguard)和调试版本(无proguard)生成的apk,这表明proguard正在使用属性的 org.eclipse .... 包名称,并更改了'org'到'c'之类的字母。 mqtt paho客户端正在使用完整的程序包名称来查找属性文件,因此无论您在proguard中包含或排除了什么内容,都找不到该文件。我看了几个月前制作的apk(我没有使用paho客户端执行任何操作,也没有使用paho客户端执行代码的那部分工作……效果很好,不需要更改它)。我在旧版本的APK中看到“ org”已经存在。
因此问题出在proguard。我可以做的就是获取1.1.0的源文件,创建一个新的Java项目模块,并在源代码中单调乏味地注释掉每个“ log”和getLogger。它是暂时的和令人不快的修复程序,但是可以正常工作。当proguard(R8)解决此问题时,我可以回到原来的状态。