Andriod は、SignalR の混乱によって引き起こされる問題を解決します

質問

SignalR は以下に依存します。

implementation 'com.microsoft.signalr:signalr:5.0.3'

リアルタイム通信に SignalR を使用する場合、プログラムはデバッグ インストール モードで正常に実行されます。パッケージ化して公開した後、操作で次のエラーが報告されます。

03-06 15:02:50.504 13121-13158/? I/c.e.a.z1: WebSocket transport connected to: ws://192.168.1.137:8066/messagehub?id=2--aL0lysu5pheJNLJuC6w.
03-06 15:02:50.510 13121-13158/? I/c.e.a.v0: HubConnection started.
03-06 15:02:50.511 13121-13158/? I/c.e.a.l1: WebSocket closing with status code '1000' and reason ''.
03-06 15:02:50.512 13121-13158/? I/c.e.a.v0: HubConnection stopped.
03-06 15:02:50.514 13121-13522/? E/c.e.a.l1: WebSocket closed from an error.
    java.net.SocketException: sendto failed: ECONNRESET (Connection reset by peer)
        at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:549)
        at libcore.io.IoBridge.sendto(IoBridge.java:518)
        at java.net.HwPlainSocketImpl.write(HwPlainSocketImpl.java:1129)
        at java.net.HwPlainSocketImpl.access$1500(HwPlainSocketImpl.java:63)
        at java.net.HwPlainSocketImpl$PlainSocketOutputStream.write(HwPlainSocketImpl.java:887)
        at okio.Okio$1.write(Okio.java:5)
        at okio.AsyncTimeout$1.write(AsyncTimeout.java:6)
        at okio.RealBufferedSink.emit(RealBufferedSink.java:3)
        at f.i0.m.d.a(WebSocketWriter.java:35)
        at f.i0.m.d$a.close(WebSocketWriter.java:2)
        at okio.RealBufferedSink.close(RealBufferedSink.java:4)
        at f.i0.m.a.d(RealWebSocket.java:29)
        at f.i0.m.a$a.run(RealWebSocket.java:1)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:833)
     Caused by: android.system.ErrnoException: sendto failed: ECONNRESET (Connection reset by peer)
        at libcore.io.Posix.sendtoBytes(Native Method)
        at libcore.io.Posix.sendto(Posix.java:211)
        at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:278)
        at libcore.io.IoBridge.sendto(IoBridge.java:516)
        at java.net.HwPlainSocketImpl.write(HwPlainSocketImpl.java:1129) 
        at java.net.HwPlainSocketImpl.access$1500(HwPlainSocketImpl.java:63) 
        at java.net.HwPlainSocketImpl$PlainSocketOutputStream.write(HwPlainSocketImpl.java:887) 
        at okio.Okio$1.write(Okio.java:5) 
        at okio.AsyncTimeout$1.write(AsyncTimeout.java:6) 
        at okio.RealBufferedSink.emit(RealBufferedSink.java:3) 
        at f.i0.m.d.a(WebSocketWriter.java:35) 
        at f.i0.m.d$a.close(WebSocketWriter.java:2) 
        at okio.RealBufferedSink.close(RealBufferedSink.java:4) 
        at f.i0.m.a.d(RealWebSocket.java:29) 
        at f.i0.m.a$a.run(RealWebSocket.java:1) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154) 
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
        at java.lang.Thread.run(Thread.java:833) 
03-06 15:02:50.514 13121-13522/? E/c.e.a.v0: 'stopConnection' called with a null ConnectionState. This is not expected, please file a bug. https://github.com/dotnet/aspnetcore/issues/new?assignees=&labels=&template=bug_report.md

理由

パッケージ化と発行のプロセス中に、SignalR ライブラリ ファイルcom.microsoft.signalrが混乱し、操作中に例外が発生しました。

解決

proguard の難読化ルールに追加します。

-keep class com.microsoft.**{*;}

問題が解決しました!

おすすめ

転載: blog.csdn.net/hanshiying007/article/details/114454005