在Stack Overflow中似乎有无数关于这个错误的报告。这些建议都没有奏效。在我的情况下,它几乎与此堆栈溢出报告SPRING相同
除了这种情况,Android是在Android Studio中构建的。它只发生在带有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中的一个错误?
查看发布版本(使用proguard)和调试版本(没有proguard)生成的apks,显示proguard正在获取属性的org.eclipse ....包名称,并将'org'更改为某些字母,如'c' 。 mqtt paho客户端正在使用完整的软件包名称查找属性文件,因此无论您在proguard中包含或排除什么,都无法找到它。我看了几个月前制作的apk(我没有对paho客户端或使用paho客户端的代码部分做任何事情......它工作正常,我没有必要改变它)。我在旧的版本apk中看到'org'应该存在。
所以问题在于进展。我所能做的就是前进了1.1.0的源文件,创建一个新的java项目模块,并在源代码中冗长地注释掉每个'log'和getLogger。这是一个暂时的,令人不快的修复,但它的工作原理。当proguard(R8)解决这个问题时,我可以回到原来的状态。
所以我想唯一真正的解决办法就是向R8提交一个bug。我没有做过。