java.util.MissingResourceException-定位日志类(MQTT库)时出错

java.util.MissingResourceException-定位日志类(MQTT库)时出错,java,android,mqtt,Java,Android,Mqtt,我正在编写一个使用MQTT的Android应用程序 在发布时生成时,我得到一个异常: MqttClient client = new MqttClient(host, clientId, new MemoryPersistence()); 在调试构建时,一切正常。 我使用的是mqtt-client-0.4.0.jar 我在发行版中得到的执行选项是: 如果我在build.gradle文件的release块中添加debugable true,我不会得到错误,应用程序也可以正常工作。但我不想要一个

我正在编写一个使用MQTT的Android应用程序

发布时生成时,我得到一个异常:

MqttClient client = new MqttClient(host, clientId, new MemoryPersistence()); 
在调试构建时,一切正常。 我使用的是mqtt-client-0.4.0.jar

我在发行版中得到的执行选项是:

如果我在build.gradle文件的release块中添加
debugable true
,我不会得到错误,应用程序也可以正常工作。但我不想要一个可调试的版本


您能帮助我吗?

您可以在proguard-rules.pro文件中添加以下行:

-keep class org.eclipse.paho.clent.mqttv3.** {*;}
-keep class org.eclipse.paho.client.mqttv3.*$* { *; }
-keep class org.eclipse.paho.client.mqttv3.logging.JSR47Logger { *; }


您说只有在使用生产构建运行时才会发生这种情况。尝试确保Paho代码被排除在混淆之外。
    public static Logger getLogger(String messageCatalogName, String loggerID) {
        String loggerClassName = overrideloggerClassName;
        Logger logger = null;

        if (loggerClassName == null) {
            loggerClassName = jsr47LoggerClassName;
        }
        logger = getLogger(loggerClassName, 
        ResourceBundle.getBundle(messageCatalogName), loggerID, null) ;

        if (null == logger) {
                throw new MissingResourceException("Error locating the 
                                                    logging class", CLASS_NAME, loggerID);
        }
    return logger;
    }
-keep class org.eclipse.paho.clent.mqttv3.** {*;}
-keep class org.eclipse.paho.client.mqttv3.*$* { *; }
-keep class org.eclipse.paho.client.mqttv3.logging.JSR47Logger { *; }