2014-10-02 153 views
3

我正在开发一个聊天的Android应用程序,我正在使用Quickblox。我在我的android应用程序中集成了QuickBlox“quickblox-android-1.2.4.jar”QuickBlox SDK 1.2.4库。我已阅读thisthis和QB的许多其他链接教程。代码完全按照我的意愿运行,但是当我使用Proguard时出现问题QBChatService.getInstance()。loginWithUser不起作用。我对那个代码是:登录聊天在QuickBlox为Android应用程序

QBChatService.getInstance().loginWithUser(user, 
        new SessionCallback() { 
         @Override 
         public void onLoginSuccess() { 

          Log.i("success when login", "success:"); 

         } 

         @Override 
         public void onLoginError(String error) { 
          Log.i("Error", "Error: " + error); 
         } 
        }); 

但登录也不错误当它既不打印成功。不知道为什么?如果我删除Proguard并在我的其他演示应用程序中运行,这将运行得很好。所以唯一可能的原因可能是由于Proguard。你可以在这个问题上提一下我在“proguard-project.txt”中保留哪些类(如果是这样的话),以帮助我解决问题。

我已经提到过下面的类:

#QuickBlox 
-keep class org.jivesoftware.smack.initializer.VmArgInitializer { public *; } 
-keep class org.jivesoftware.smack.ReconnectionManager { public *; } 
-keep class com.quickblox.module.c.a.c { public *; } 
-keep class com.quickblox.module.chat.QBChatService { public *; } 
-keep class com.quickblox.module.chat.QBChatService.loginWithUser { public *; } 
-keep class com.quickblox.module.chat.listeners.SessionCallback { public *; } 
-keep class * extends org.jivesoftware.smack { public *; } 

我已经明显编写的代码为QBAuth.createSession,登录前和成功的作品提到here。事实并非如此。

如果我错过了这里的东西,请建议我。 在此先感谢。

+0

您可以参考这个[链接] [1],你可能有一个类似的问题。 [1]:http://stackoverflow.com/questions/26158606/quickblox-android-sdk-1-2-isnt-running-anymore-on-android-api-before-14 – 2014-10-04 12:33:29

+0

@AymanMahgoub - 不,我在这里没有这个问题。我没有在我身边发生任何错误。我只是不会调用SessionCallback监听器,因此在登录时无法打印成功,也无法在上述代码中输出错误。但正如我上面告诉的,在没有使用Proguard的类似演示中,它完全正常工作。 – 2014-10-06 07:18:26

+0

我现在面临同样的问题,你有任何更新? – 2014-10-08 17:05:40

回答

4

我有类似的问题,我需要扩大我的ProGuard配置为以下和它现在的工作对我来说:

-keep class org.jivesoftware.smack.** { public *; } 
-keep class org.jivesoftware.smackx.** { public *; } 
-keep class com.quickblox.** { public *; } 
-keep class * extends org.jivesoftware.smack { public *; } 
-keep class * implements org.jivesoftware.smack.debugger.SmackDebugger { public *; } 
+0

非常感谢杰克,你是一名Savier。我一直在寻找这个解决方案的天!我不能感谢你足够的人! – 2014-11-18 05:21:04

+0

谢谢Jake和Nilay;) – 2014-11-18 09:36:04

+0

很高兴帮助:) – 2014-11-18 21:41:32