Xamarin是否在Xamarin Android绑定库中支持Kotlin协程?

时间:2019-07-07 17:41:58

标签: android xamarin.android kotlin-coroutines

我有一个带有Kotlin代码的Android绑定库,只要它在Kotlin代码中按runBlocking {}就会退出。

  

E(28583:28691)错误[19]-工作线程捕获到异常:   无法解决以下问题:Lkotlinx /协程/ BuildersKt; E(28583:28691)   Java.Lang.NoClassDefFoundError:无法解决以下问题:   Lkotlinx /协程/ BuildersKt; ---> Java.Lang.ClassNotFoundException:   在路径上找不到类“ kotlinx.coroutines.BuildersKt”:   DexPathList [[zip文件   “ /data/app/de.mycompany.app.myproduct-1/base.apk"],nativeLibraryDirectories=[/data/app/de.mycompany.app.myproduct-1/lib/arm,   / vendor / lib,/ system / lib]]

在我的Kotlin AAR模块中,我具有以下依赖项

  

实现“ org.jetbrains.kotlin:kotlin-stdlib-jdk7:$ kotlin_version”
  =>等效Xamarin.Kotlin.StdLib
  实现'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.1'
              =>   等价的Xamarin。????
  实作   “ org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.1”
      =>   等价的Xamarin。

我猜Xamarin.Kotlin.StdLib不包含对Kotlinx协程的支持。
有没有办法在Xamarin Android绑定库中获得对Kotlinx-协程的支持?

1 个答案:

答案 0 :(得分:1)

您说得对,Xamarin.Kotlin.StdLib 不包括对 Kotlinx 协程的支持。

为了在 Xamarin Android 绑定库中拥有 Kotlinx-coroutines,您必须添加 KotlinX.Coroutines NuGet 包作为应用项目的依赖项,并且绑定库项目。

所以如果你有这样的事情:

<块引用>

MyAndroidApp.proj -> MyBindingLibrary.proj

两个项目都必须添加 KotlinX.Coroutines 依赖项。

注意就我而言,Microsoft 的 binding 不起作用。我不得不使用 Karamunting 的 binding