2014-10-02 151 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