MAUI Android应用启动崩溃:引入FileSystem引用引发异常
MAUI Android Release模式下访问FileSystem.AppDataDirectory导致启动崩溃
我用Visual Studio 2022创建了面向Android的标准MAUI「Hello World」应用,默认代码在Release模式编译签名APK后,能在三星Android平板正常安装运行。但在OnCounterClicked方法中加入一行string path = FileSystem.Current.AppDataDirectory后,重新编译的APK安装后启动即崩溃,甚至没机会点击按钮触发该方法。试过用try-catch包裹这段代码,问题依然存在。预期是应用能和引入FileSystem前一样正常启动运行。
可正常运行的代码
private void OnCounterClicked(object sender, EventArgs e) { count++; if (count == 1) CounterBtn.Text = $"Clicked {count} time"; else CounterBtn.Text = $"Clicked {count} times"; SemanticScreenReader.Announce(CounterBtn.Text); }
导致崩溃的代码
private void OnCounterClicked(object sender, EventArgs e) { string stPath = FileSystem.Current.AppDataDirectory; count++; if (count == 1) CounterBtn.Text = $"Clicked {count} time"; else CounterBtn.Text = $"Clicked {count} times"; SemanticScreenReader.Announce(CounterBtn.Text); }
排查与解决建议
- 调整Release模式链接行为:MAUI在Release模式默认启用链接优化,可能误删了FileSystem相关依赖。可在Android项目的
PropertyGroup中添加<AndroidLinkMode>None</AndroidLinkMode>临时禁用全量链接,或更精准地保留必要程序集:<AndroidLinkSkip>Microsoft.Maui.Storage</AndroidLinkSkip>。 - 确认权限配置:虽然AppDataDirectory属于应用私有目录无需额外权限,但可检查
AndroidManifest.xml是否存在异常配置,确保MAUI自动生成的权限条目正常。 - 抓取崩溃日志:用Android Studio的Logcat获取崩溃堆栈信息,定位具体异常类型(如类型未找到、空引用),精准排查问题根源。
- 清理重建项目:删除解决方案的bin/obj目录,清理缓存后重新编译签名APK,排除缓存导致的异常。
内容的提问来源于stack exchange,提问作者Sutts99
相关产品推荐
相关产品推荐

