使用Android.WorkManager的Xamarin Android Bindings

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (63)

我们正在制作一款需要使用Android的WorkManager库的应用。依赖.AAR文件已编译和测试工作。我能够通过使用Visual Studio的Java Bindings项目绑定依赖项AAR文件来构建DLL。

但是,当Xamarin Android项目使用使用Android WorkManager的依赖库时,它会抛出异常:

Java.Lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/WorkManager; ---> 
Java.Lang.ClassNotFoundException: Didn't find class "androidx.work.WorkManager" on path: 
DexPathList[[zip file "/data/app/com.appname.app-vXQN7f21kz_QrhvSakWVRA==/base.apk"],nativeLibraryDirectories=[/data/app/com.appname.app-vXQN7f21kz_QrhvSakWVRA==/lib/arm64, /data/app/com.appname.app-vXQN7f21kz_QrhvSakWVRA==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]

我还尝试下载Android WorkManager AAR文件,创建自己的Bindings Library项目,编译它,并将其添加到主Xamarin Forms项目,以及依赖项AAR。但我得到这个错误:

error: CommandsCompletedListener is not public in SystemAlarmDispatcher; cannot be accessed from outside package
    androidx.work.impl.background.systemalarm.SystemAlarmDispatcher.CommandsCompletedListener

我是否应该在依赖项Bindings项目中包含或修改某些内容?

我已经尝试将WorkManager AAR添加到依赖项Bindings项目并使用它,但我仍然得到了ClassNotFoundException。有没有人尝试过使用WorkManager for Xamarin Android的Java依赖?

提问于
用户回答回答于

Xamarin团队刚刚发布了一个带有Android WorkManager绑定的NuGet:https//www.nuget.org/packages/Xamarin.Android.Arch.Work.Runtime

安装此NuGet并确保您的Xamarin.Android项目针对Android SDK v28 +。然后你应该能够使用AndroidX.Work名称空间。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励