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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:19