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

如何在.NET MAUI开发的Android应用中配置nursery-size参数?

回答

.NET MAUI Android 完全支持配置 MONO_GC_PARAMS 实现和 Xamarin 一致的 nursery-size 调整,不需要沿用 Xamarin 时代修改 .conf 配置文件的老方法——新版 .NET Android 打包逻辑已经调整,老方法改的文件会在构建时被覆盖,完全不会生效,正确的配置方法有两种:


方法1:environment.txt 静态配置(正式发布推荐,全场景生效)

这个是官方支持的标准配置方式,兼容性最好,Release/AOT/单文件编译场景下都能正常生效:

  1. 打开你的 MAUI 项目,在 Platforms/Android 目录下新建一个纯文本文件,命名为 environment.txt
  2. 在文件内写入你需要的 GC 参数配置:
MONO_GC_PARAMS=nursery-size=128m

如果需要同时配置其他 GC 参数,用逗号分隔即可,例如:

MONO_GC_PARAMS=nursery-size=128m,soft-heap-limit=512m,evacuation-threshold=80
  1. 右键这个 environment.txt 文件打开属性窗口,把生成操作设置为 AndroidEnvironment,或者直接编辑项目 .csproj 文件,在 Android 平台的配置段里加入以下引用:
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">
  <AndroidEnvironment Include="Platforms\Android\environment.txt" />
</PropertyGroup>

方法2:启动阶段动态设置(仅适合临时调试)

如果只是开发阶段临时调整参数测试效果,可以在 MainActivity 的生命周期最开始设置环境变量,注意必须在 base.OnCreate 调用之前赋值才会被 Mono 运行时读取:

protected override void OnCreate(Bundle? savedInstanceState)
{
    // 这行必须放在base.OnCreate之前
    Android.OS.Environment.SetEnvironmentVariable("MONO_GC_PARAMS", "nursery-size=128m");
    base.OnCreate(savedInstanceState);
}

注意:这个方式在开启 AOT、LLVM 编译的 Release 包下大概率不生效,正式发包不要用这个方案。


配置校验

部署运行应用后,可以加一行调试日志确认参数加载成功:

Log.Debug("GC_CONFIG", "当前MONO_GC_PARAMS值:{0}", 
    Android.OS.Environment.GetEnvironmentVariable("MONO_GC_PARAMS"));

在 Android 日志控制台过滤 GC_CONFIG 标签,能看到输出的 nursery-size=128m 就说明配置已经生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:01:40