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

.NET MAUI应用启动崩溃,抛出Android.Provider.Settings+SettingNotFoundException异常

解决.NET MAUI Android端因animator_duration_scale缺失导致的启动崩溃问题

这个异常的核心原因是Android系统中animator_duration_scale系统设置项缺失,.NET MAUI初始化时尝试读取该值失败导致崩溃,结合.NET 8对动画API的调整,可通过以下几种方案解决:

方案1:恢复系统动画设置

  • 打开设备设置 → 开发者选项(未显示的话,到「关于手机」连续点击版本号开启)
  • 找到「动画时长缩放」分组下的三个选项:窗口动画缩放、过渡动画缩放、动画程序时长缩放
  • 将所有选项从「关闭」改为非关闭值(如0.5x或1x),重启应用即可。

方案2:添加代码捕获并修复缺失设置

在Android项目的MainActivity.cs中,在MAUI初始化前添加代码,处理设置缺失的情况:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    
    try
    {
        // 尝试读取动画时长缩放设置
        _ = Settings.Global.GetFloat(ContentResolver, Settings.Global.AnimatorDurationScale);
    }
    catch (SettingNotFoundException)
    {
        // 设置不存在时,写入默认值1.0f(正常动画速度)
        Settings.Global.PutFloat(ContentResolver, Settings.Global.AnimatorDurationScale, 1.0f);
    }

    MauiProgram.CreateMauiApp().Run(this);
}

同时,在AndroidManifest.xml中添加修改系统设置的权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

注:发布到应用商店时,需注意该权限的审核规则,调试阶段可直接使用。

方案3:排查依赖与框架配置

  • 确认项目Android目标框架为.NET 8兼容版本(Android 13/API 33及以上)
  • 检查是否引用了旧版动画相关NuGet包,更新至兼容.NET 8的版本。

验证:完成上述操作后,重新启动调试,主页的InitializeComponent()将不再抛出异常,应用正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:04:53