MAUI iOS应用中点击WebView内链接/按钮导致程序意外崩溃
MAUI WebView iOS点击崩溃问题解决方案
问题描述
我的MAUI WebView应用在Android平台运行正常,但iOS平台上点击任何链接或按钮都会触发崩溃,崩溃日志显示内存分配错误(pointer being freed was not allocated),最终导致SIGABRT信号。已确认该问题与MAUI官方已知的两个问题相关(#17923、#11544)。
崩溃日志
2024-03-08 11:05:01.774516+0000 TestMaui2[8858:146865] SecTaskCopyDebugDescription: TestMaui2[8858]/0#-1 LF=0 Thread started: .NET Timer #5 2024-03-08 11:05:02.898907+0000 TestMaui2[8858:146865] [ResourceLoadStatistics] Failed to request allowed query parameters from WebPrivacy. Thread started: #6 Thread started: .NET TP Gate #7 Thread started: #8 Loaded assembly: /Users/10ticks/Library/Developer/CoreSimulator/Devices/3209D81A-412F-4859-A55D-3CB8D97B8842/data/Containers/Bundle/Application/F6DC503C-0B9E-49BD-85C7-9DEF7B671798/TestMaui2.app/System.Xml.XmlSerializer.dll [External] Thread started: #9 Thread started: #10 Thread started: #11 TestMaui2(8858,0x204da5240) malloc: ** error for object 0x30d14b680: pointer being freed was not allocated TestMaui2(8858,0x204da5240) malloc: ** set a breakpoint in malloc_error_break to debug ================================================================= Native Crash Reporting ================================================================= Got a SIGABRT while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application。
复现步骤
- 创建包含WebView加载目标网站的MAUI应用
- 在iOS模拟器或真机上启动应用
- 点击页面内任意链接或按钮
- 应用立即崩溃
解决建议
1. 升级MAUI SDK到最新稳定版
这类原生内存问题大多已在MAUI的后续版本补丁中修复,优先尝试升级你的.NET MAUI SDK到最新稳定版本(比如.NET 8的最新更新包)。
2. 自定义WebView导航事件处理
手动控制WebView的导航流程,避免默认导航逻辑的内存泄漏:
在代码后台添加导航事件处理:
private void WebView_Navigating(object sender, WebNavigatingEventArgs e) { // 允许正常导航,替代默认处理逻辑 e.Cancel = false; }
在XAML中绑定该事件:
<WebView Source="https://你的目标网址" Navigating="WebView_Navigating" />
3. 调整iOS平台Info.plist配置
修改Platforms/iOS/Info.plist,添加App Transport Security配置,确保WebView资源加载权限正常:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
(注:若目标网站为HTTPS,可后续调整为更严格的配置,此配置用于快速排查问题)
4. 移除自定义WebView渲染器(若有)
如果你的项目中使用了自定义WebView渲染器,暂时移除并使用默认WebView测试,自定义渲染器可能引入内存管理问题。
内容的提问来源于stack exchange,提问作者Hassan
相关产品推荐
相关产品推荐

