2、MsgProvider.msgToPlugin.collect{ } -> crash
FATAL EXCEPTION: main
Process: com.test.music.plugin.host, PID: 27990
java.lang.IncompatibleClassChangeError: Class 'com.test.music.plugin.app.MainActivity$onCreate$12$1' does not implement interface 'kotlin.coroutines.Continuation' in call to 'kotlin.coroutines.CoroutineContext kotlin.coroutines.Continuation.getContext()' (declaration of 'kotlin.coroutines.jvm.internal.ContinuationImpl' appears in /data/app/~~ayBlAcJS3LRsIwFkHYHyyw==/com.test.music.plugin.host-LlMG87V4w42qVgQfZs82ew==/base.apk)
at kotlin.coroutines.jvm.internal.ContinuationImpl.(ContinuationImpl.kt:102)
at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.(Unknown Source:2)
at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(Unknown Source:22)
at kotlinx.coroutines.flow.SharedFlowImpl.collect(Unknown Source:0)
at com.test.music.plugin.app.MainActivity$onCreate$12$1.invokeSuspend(MainActivity.kt:174)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
at com.test.music.plugin.app.MainActivity.onCreate$lambda$22(MainActivity.kt:170)
at com.test.music.plugin.app.MainActivity.$r8$lambda$oBURvhqu96RUfNnOLexNg5F0e44(Unknown Source:0)
at com.test.music.plugin.app.MainActivity$$ExternalSyntheticLambda6.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:7498)
at android.view.View.performClickInternal(View.java:7471)
at android.view.View.access$3700(View.java:843)
at android.view.View$PerformClick.run(View.java:29098)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:344)
at android.app.ActivityThread.main(ActivityThread.java:8249)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:589)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1071)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@fa2b6fd, Dispatchers.Main.immediate]
宿主和插件都依赖了一个公共lib库。 宿主将这个库打包进去,插件只是compileOnly。
插件和宿主同进程。
lib库定义一个flow
object MsgProvider { val msgToHost = MutableSharedFlow<String>(0, 1, BufferOverflow.DROP_OLDEST) }
在插件activity中: 1、MsgProvider.msgToHost.emit("这是插件发给宿主的消息") ->能成功启动插件,并发送消息2、MsgProvider.msgToPlugin.collect{ } -> crash FATAL EXCEPTION: main Process: com.test.music.plugin.host, PID: 27990 java.lang.IncompatibleClassChangeError: Class 'com.test.music.plugin.app.MainActivity$onCreate$12$1' does not implement interface 'kotlin.coroutines.Continuation' in call to 'kotlin.coroutines.CoroutineContext kotlin.coroutines.Continuation.getContext()' (declaration of 'kotlin.coroutines.jvm.internal.ContinuationImpl' appears in /data/app/~~ayBlAcJS3LRsIwFkHYHyyw==/com.test.music.plugin.host-LlMG87V4w42qVgQfZs82ew==/base.apk) at kotlin.coroutines.jvm.internal.ContinuationImpl.(ContinuationImpl.kt:102)
at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.(Unknown Source:2)
at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(Unknown Source:22)
at kotlinx.coroutines.flow.SharedFlowImpl.collect(Unknown Source:0)
at com.test.music.plugin.app.MainActivity$onCreate$12$1.invokeSuspend(MainActivity.kt:174)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
at com.test.music.plugin.app.MainActivity.onCreate$lambda$22(MainActivity.kt:170)
at com.test.music.plugin.app.MainActivity.$r8$lambda$oBURvhqu96RUfNnOLexNg5F0e44(Unknown Source:0)
at com.test.music.plugin.app.MainActivity$$ExternalSyntheticLambda6.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:7498)
at android.view.View.performClickInternal(View.java:7471)
at android.view.View.access$3700(View.java:843)
at android.view.View$PerformClick.run(View.java:29098)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:344)
at android.app.ActivityThread.main(ActivityThread.java:8249)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:589)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1071)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@fa2b6fd, Dispatchers.Main.immediate]
@shifujun 麻烦看下什么原因啊