我已经从 okhttp + retrofit 更新到 okhttp3 + retrofit2 但我的应用程序没有启动这个异常的原因
FATAL EXCEPTION: EventThread
Process: appli.speaky.com, PID: 14705
java.lang.NoSuchMethodError: No virtual method setCallWebSocket(Lokhttp3/Call;)V in class Lokhttp3/internal/Internal; or its super classes (declaration of 'okhttp3.internal.Internal' appears in /data/data/appli.example.com/files/instant-run/dex/slice-okhttp-3.6.0_29bb10e5f590229716bfa8daf196d09ea67f56a8-classes.dex)
at okhttp3.ws.WebSocketCall.enqueue(WebSocketCall.java:108)
at io.socket.engineio.client.transports.WebSocket.doOpen(WebSocket.java:84)
at io.socket.engineio.client.Transport$1.run(Transport.java:82)
at io.socket.thread.EventThread.exec(EventThread.java:55)
at io.socket.engineio.client.Transport.open(Transport.java:77)
at io.socket.engineio.client.Socket.probe(Socket.java:472)
at io.socket.engineio.client.Socket.onOpen(Socket.java:485)
at io.socket.engineio.client.Socket.onHandshake(Socket.java:526)
at io.socket.engineio.client.Socket.onPacket(Socket.java:499)
at io.socket.engineio.client.Socket.access$1000(Socket.java:31)
at io.socket.engineio.client.Socket$5.call(Socket.java:313)
at io.socket.emitter.Emitter.emit(Emitter.java:117)
at io.socket.engineio.client.Transport.onPacket(Transport.java:134)
at io.socket.engineio.client.transports.Polling.access$700(Polling.java:17)
at io.socket.engineio.client.transports.Polling$2.call(Polling.java:124)
at io.socket.engineio.parser.Parser.decodePayload(Parser.java:251)
at io.socket.engineio.client.transports.Polling._onData(Polling.java:134)
at io.socket.engineio.client.transports.Polling.onData(Polling.java:106)
at io.socket.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:111)
at io.socket.thread.EventThread$2.run(EventThread.java:80)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Run Code Online (Sandbox Code Playgroud)
我也有同样的问题。问题是我正在使用套接字 0.8.0,我认为它与 OKHTTP websocket 实现有冲突。
升级到最新版本的 socket.io 后
compile('io.socket:socket.io-client:0.8.3') {
exclude group: 'org.json', module: 'json'
}
Run Code Online (Sandbox Code Playgroud)
并使用最新版本的 OKHTTP (无需包含 okhttp-ws)
compile "com.squareup.okhttp3:okhttp:3.7.0"
compile "com.squareup.okhttp3:logging-interceptor:3.7.0"
Run Code Online (Sandbox Code Playgroud)
我的应用程序在第一次加载时没有崩溃,它正在连接到套接字。拦截器也没有任何冲突,并且在 logcat 上按预期记录。
有了这个,就没有必要降级您的 okHTTP 版本,因为它在过去一直是有效的解决方案。:)
小智 5
你好?几天前我也遇到了同样的问题(我的应用程序是本机应用程序),我只是使用 3.4.1 版本来替换最新版本?并解决了吗?
compile "com.squareup.okhttp3:okhttp:3.4.1"
compile "com.squareup.okhttp3:logging-interceptor:3.4.1"
Run Code Online (Sandbox Code Playgroud)
我猜这是由 Retrofit2 的 okhttp lib 引起的
| 归档时间: |
|
| 查看次数: |
6854 次 |
| 最近记录: |