.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
相关产品推荐
相关产品推荐

