【发布时间】:2016-12-27 12:09:42
【问题描述】:
我正在尝试使用 pusher-java-client1.2.1 库连接到 android 中的 pusher,我的连接代码如下所示
if(Utils.isOnline(mcontext)) {
PusherOptions pOptions = new PusherOptions();
pOptions.setAuthorizer(new HttpAuthorizer(Constants.PUSHER_AUTH_SRC_URL + "/auth.php"));
pusher = new Pusher(Constants.PUSHER_KEY, pOptions);
pusher.connect();
channel = pusher.subscribe(Utils.getPref(mcontext, "channel_name", ""));
Utils.setPref(mcontext, "OtherUserId", "");
}else{
Utils.setCustomToast(mcontext,Constants.NO_INTERNET,false);
}
我的这段代码在 android 5.0 及以上版本中运行良好,但在 android 4.4 应用程序崩溃并出现以下 logcat 输出
java.lang.NoClassDefFoundError: com.pusher.client.util.Factory
at com.pusher.client.Pusher.<init>(Pusher.java:83)
at com.driversafe.chat.MessageStatusApiCalling.pusherConnect(MessageStatusApiCalling.java:62)
at com.driversafe.chat.ApplicationLifeCycleHandler.onActivityCreated(ApplicationLifeCycleHandler.java:27)
at android.app.Application.dispatchActivityCreated(Application.java:189)
at android.app.Activity.onCreate(Activity.java:903)
at android.support.v4.app.BaseFragmentActivityDonut.onCreate(BaseFragmentActivityDonut.java:39)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:298)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
at com.driversafe.SplashActivity.onCreate(SplashActivity.java:57)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
任何人都可以建议我解决这个问题
【问题讨论】:
-
这对我来说似乎是 MultiDex 问题。您的应用程序的
build.gradle中有multiDexEnabled true行,并且您的Application 类没有扩展MultiDexApplication?顺便说一句,pusher-java-client 的最新版本是 1.4.0 -
@zmarkan 我的应用已经启用了 multidex