【发布时间】:2015-09-15 20:20:01
【问题描述】:
我正在开发一个使用 Quickblox SDK 的应用程序。如果我用
编译它minifyEnabled false
它工作得很好。但是,如果我启用 minify 来混淆代码,我会收到以下错误:
09-15 15:00:50.865 12029-12029/com.app.meet E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.app.meet, PID: 12029
java.lang.ExceptionInInitializerError
at com.g.b.d.a(Unknown Source)
at com.app.meet.App.j(Unknown Source)
at com.app.meet.j.a(Unknown Source)
at com.app.meet.h.e.onServiceConnected(Unknown Source)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1208)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1225)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: org.jivesoftware.smack.initializer.VmArgInitializer
at c.b.a.q.<clinit>(Unknown Source)
我注意到 org.jivesoftware.smack 包在 quickblox-android-sdk-chat-2.3.1.jar 中
通过阅读网站上的一些答案,我修改了我的 proguard-rules.pro,如下所示:
#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 *; }
-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 *; }
我希望有人知道这里可能存在什么问题。
【问题讨论】:
标签: android proguard quickblox