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

原生Xamarin.Android应用Release发布模式下频繁崩溃问题咨询

排查方向

1. 程序集版本与绑定冲突排查

  • 你报错的System.Core, Version=2.0.5.0是Silverlight时代的程序集版本,优先检查所有引用的第三方Nuget包、自定义Java绑定库,是否存在依赖旧版.NET Framework/Silverlight运行时的组件,这类组件会强制拉取低版本System.Core引用,和Xamarin.Android框架自带的高版本System.Core产生冲突。
  • 检查项目的App.config文件,确认是否存在System.Core的绑定重定向规则,没有则手动添加如下配置,注意newVersion值要和你项目实际引用的System.Core版本对应:
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Core" publicKeyToken="7cec85d7bea7798e" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="你项目中System.Core的实际版本号" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
  • 删掉所有手动添加的本地System.Core.dll引用,保留Xamarin.Android框架默认提供的System.Core引用即可。

2. 构建缓存与环境排查

  • 完全清理构建缓存:删除解决方案下所有项目的bin、obj文件夹,关闭IDE后删除本地Xamarin缓存目录(Windows路径为C:\Users\你的用户名\AppData\Local\Xamarin,Mac路径为~/Library/Caches/Xamarin),也可以执行dotnet nuget locals all --clear清理所有Nuget缓存,之后重启IDE重新构建。
  • 确认Release模式下关闭了「增量编译」「快速部署」选项,这类开发调试用的优化选项会导致Release包的程序集打包不全,引发偶发加载失败。
  • 检查近期Xamarin.Android、Mono运行时SDK是否有自动更新,旧项目和新版本SDK存在兼容性问题的概率很高,可回滚到上一次成功打包时使用的SDK版本验证。

3. 链接器与运行时配置排查

  • 即使你已经调整过链接器选项,还是需要手动添加链接器保留配置:在项目中新建LinkerConfig.xml文件,内容如下,再将文件的生成操作设置为「LinkDescription」,强制链接器保留System.Core的所有内容:
<linker>
  <assembly fullname="System.Core" preserve="all" />
</linker>
  • 暂时关闭Release模式下的AOT编译、LLVM编译、程序集剪裁这类优化选项,重新打包测试,部分版本的Xamarin在开启这些优化时会误剪裁系统程序集的依赖。
  • 针对「仅第一次运行正常、第二次崩溃」的现象,先卸载设备上的应用再重新安装验证,确认是否是第一次运行生成的本地缓存文件损坏导致,同时排查代码中是否存在动态加载、反射调用System.Core中类型的逻辑,是否有存储权限问题导致后续运行时加载依赖失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:03