提问人:Seven Sir 提问时间:6/4/2023 更新时间:6/4/2023 访问量:83
grpc-binder:尝试编组包含 Binder 对象的 Parcel
grpc-binder: Tried to marshall a Parcel that contained Binder objects
问:
试图整理一个包含 Binder 对象的包裹。
传递对象时,发生以下错误:ParcelFileDescriptor
Metadata headers
41333: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: java.lang.IllegalStateException: java.lang.RuntimeException: Tried to marshall a Parcel that contained Binder objects.
41334: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.ServerImpl$ServerTransportListenerImpl$1HandleServerCall.runInternal(ServerImpl.java:617)
41335: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.ServerImpl$ServerTransportListenerImpl$1HandleServerCall.runInContext(ServerImpl.java:603)
41336: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
41337: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
41338: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
41339: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
41340: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at java.lang.Thread.run(Thread.java:920)
41341: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: Caused by: java.lang.RuntimeException: Tried to marshall a Parcel that contained Binder objects.
41342: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at android.os.Parcel.nativeMarshall(Native Method)
41343: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at android.os.Parcel.marshall(Parcel.java:621)
41344: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.binder.internal.ParcelableInputStream.getDelegateStream(ParcelableInputStream.java:102)
41345: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.binder.internal.ParcelableInputStream.read(ParcelableInputStream.java:116)
41346: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at com.google.common.io.ByteStreams.toByteArrayInternal(ByteStreams.java:191)
41347: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at com.google.common.io.ByteStreams.toByteArray(ByteStreams.java:238)
41348: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.Metadata.streamToBytes(Metadata.java:1046)
41349: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.Metadata.access$1300(Metadata.java:58)
41350: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.Metadata$LazyValue.toBytes(Metadata.java:942)
41351: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.Metadata.valueAsBytes(Metadata.java:183)
41352: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.Metadata.toString(Metadata.java:554)
41353: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at java.lang.String.valueOf(String.java:2924)
41354: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at java.lang.StringBuilder.append(StringBuilder.java:132)
41355: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at dragon.grpc.server.HeaderServerInterceptor.interceptCall(HeaderServerInterceptor.java:22)
41356: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.ServerInterceptors$InterceptCallHandler.startCall(ServerInterceptors.java:269)
41357: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.binder.internal.BinderTransportSecurity$ServerAuthInterceptor.interceptCall(BinderTransportSecurity.java:88)
41358: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.ServerInterceptors$InterceptCallHandler.startCall(ServerInterceptors.java:269)
41359: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.ServerImpl$ServerTransportListenerImpl.startWrappedCall(ServerImpl.java:701)
41360: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.ServerImpl$ServerTransportListenerImpl.access$2200(ServerImpl.java:408)
41361: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: at io.grpc.internal.ServerImpl$ServerTransportListenerImpl$1HandleServerCall.runInternal(ServerImpl.java:613)
41362: 06-04 14:31:22.203 29205 29349 E SerializingExecutor: ... 6 more
这是因为将用于序列化为字节数组。但不能序列化成字节数组,只能通过,然后将对象发送给对等体。grpc-binder
Parcel.marshall
Metadata headers
ParcelFileDescriptor
Parcel.writeParcelable
Parcel
有什么方法可以解决这个问题或任何其他解决方案吗?
grpc-binder 可以只传递非 binder 对象吗?Parcelable
答: 暂无答案
评论