You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Android项目中声明androidx.work:work-multiprocess依赖?

.NET Android 中添加 Work Multiprocess 依赖的解决方案

问题描述

在.NET Android项目中实现跨进程Remote Worker时,需要对应Android原生的implementation "androidx.work:work-multiprocess:$work_version"依赖,但不知道如何在.NET环境中配置。当前已使用Xamarin.AndroidX.Work.Runtime 2.10.0.1包处理Worker逻辑,Manifest中已配置RemoteWorkManagerService和SystemJobService的跨进程参数,但调用RemoteWorkManager.GetInstance(BaseContext)时抛出错误:

Java.Lang.IllegalStateException: Invalid multiprocess configuration. Define an 'implementation' dependency on :work:work-multiprocess library

Manifest配置片段:

<application android:allowBackup="true" android:icon="@mipmap/appicon" android:label="@string/app_name" android:supportsRtl="true">
    <provider
     android:name="androidx.startup.InitializationProvider"
     android:authorities="${applicationId}.androidx-startup"
     android:exported="false"
     tools:node="merge" >
      <meta-data
          android:name="androidx.work.WorkManagerInitializer"
          android:value="androidx.startup"
          tools:node="remove" />
    </provider>
    <service
    android:name="androidx.work.multiprocess.RemoteWorkManagerService"
    tools:replace="android:process"
    android:process=":ffmpegWorker"/>

    <service
        android:name="androidx.work.impl.background.systemjob.SystemJobService"
        tools:replace="android:process"
        android:process=":ffmpegWorker"/>

  </application>

调用RemoteWorkManager的代码片段:

var inputData = new Data.Builder()
    .PutString(nameof(_fifoFilename), _fifoFilename)
    .Build();

var ffmpegWorker = OneTimeWorkRequest.Builder.From<FfmpegWorker>()
    .SetInputData(inputData)
    .Build();

try
{
    if (!WorkManager.IsInitialized)
    {
        var configuration = new Configuration.Builder()
            .SetDefaultProcessName(":ffmpegWorker")
            .Build();
        WorkManager.Initialize(BaseContext, configuration);
    }
    var manager = RemoteWorkManager.GetInstance(BaseContext);
    manager.Enqueue(ffmpegWorker);

}
catch (Exception e)
{
    // 异常处理
}

解决方案

在.NET Android项目中,Android原生的androidx.work:work-multiprocess对应的NuGet包是**Xamarin.AndroidX.Work.Multiprocess**,安装步骤如下:

  1. 右键项目 → 选择「管理NuGet程序包」
  2. 在「浏览」标签页搜索Xamarin.AndroidX.Work.Multiprocess
  3. 选择与当前已安装的Xamarin.AndroidX.Work.Runtime相同版本(如2.10.0.1)的包进行安装

额外注意事项

  • 确保WorkManager初始化时,Configuration.Builder设置的DefaultProcessName与Manifest中服务配置的android:process值一致
  • 安装完成后,清理并重新生成项目,避免缓存导致的依赖未加载问题

内容的提问来源于stack exchange,提问作者Pavlo Holotiuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:38:16