MAUI应用启动报错:如何定位缺失的字符串资源ID?
MAUI启动时Android资源未找到异常排查与修复
问题描述
MAUI应用启动时直接抛出Android.Content.Res.Resources+NotFoundException异常,错误信息:Android.Content.Res.Resources+NotFoundException 'String resource ID #0x7f1000bc'
已知异常可能由无效数据类型引发,但无法定位具体问题资源,调用栈如下:
Android.Content.Res.Resources+NotFoundException Message=String resource ID #0x7f1000bc 0xFFFFFFFFFFFFFFFF in Android.Runtime.RuntimeNativeMethods.monodroid_debugger_unhandled_exception 0x1A in Android.Runtime.JNINativeWrapper._unhandled_exception at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:12,5 0x23 in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPLLL_L at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:364,26 0x17 in System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw 0x6C in Java.Interop.JniEnvironment.InstanceMethods.CallVoidMethod at /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:20370,5 0x38 in Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualVoidMethod at /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:66,7 0x29 in AndroidX.AppCompat.Widget.Toolbar.SetNavigationContentDescription at C:\a\_work\1\s\generated\androidx.appcompat.appcompat\obj\Release\net6.0-android\generated\src\AndroidX.AppCompat.Widget.Toolbar.cs:2582,5 0xBE in Microsoft.Maui.Controls.Platform.ToolbarExtensions.UpdateBackButton at D:\a\_work\1\s\src\Controls\src\Core\Platform\Android\Extensions\ToolbarExtensions.cs:113,6 0x7 in Microsoft.Maui.Controls.Toolbar.MapBackButtonVisible at D:\a\_work\1\s\src\Controls\src\Core\Toolbar\Toolbar.Android.cs:180,4 0x8 in Microsoft.Maui.PropertyMapperExtensions.<>c__DisplayClass2_0<Microsoft.Maui.Controls.Toolbar,Microsoft.Maui.Handlers. at D:\a\_work\1\s\src\Core\src\PropertyMapperExtensions.cs:66,79 0x2D in Microsoft.Maui.PropertyMapperExtensions.<>c__DisplayClass1_0<Microsoft.Maui.Controls.Toolbar,Microsoft.Maui.Handlers. at D:\a\_work\1\s\src\Core\src\PropertyMapperExtensions.cs:46,6 0x21 in Microsoft.Maui.PropertyMapper<Microsoft.Maui.IToolbar,Microsoft.Maui.Handlers.IToolbarHandler>. at D:\a\_work\1\s\src\Core\src\PropertyMapper.cs:172,6 0x17 in Microsoft.Maui.PropertyMapper.UpdatePropertyCore at D:\a\_work\1\s\src\Core\src\PropertyMapper.cs:47,4 0x1D in Microsoft.Maui.PropertyMapper.UpdateProperties at D:\a\_work\1\s\src\Core\src\PropertyMapper.cs:82,5 0xCB in Microsoft.Maui.Handlers.ElementHandler.SetVirtualView at D:\a\_work\1\s\src\Core\src\Handlers\Element\ElementHandler.cs:79,4 0xC0 in Microsoft.Maui.Platform.ElementExtensions.ToHandler at D:\a\_work\1\s\src\Core\src\Platform\ElementExtensions.cs:99,5 0x2 in Microsoft.Maui.Platform.ElementExtensions.ToPlatform at D:\a\_work\1\s\src\Core\src\Platform\ElementExtensions.cs:127,4 0xD3 in Microsoft.Maui.Controls.Platform.Compatibility.ShellSectionRenderer.OnCreateView at D:\a\_work\1\s\src\Controls\src\Core\Compatibility\Handlers\Shell\Android\ShellSectionRenderer.cs:107,4 0x24 in AndroidX.Fragment.App.Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ at C:\a\_work\1\s\generated\androidx.fragment.fragment\obj\Release\net6.0-android\generated\src\AndroidX.Fragment.App.Fragment.cs:2031,4 0xD in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPLLL_L at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:363,5
排查步骤
1. 定位资源ID对应的资源名称
- 查看Android项目编译后生成的
public.xml文件,路径一般为obj\Debug\netX-android\generated\res\values\public.xml,搜索0x7f1000bc,找到对应的资源name属性值 - 若找不到该文件,先编译Android项目,
public.xml会自动生成;也可使用Android SDK的aapt2工具解析APK:执行aapt2 dump resources --values 你的APK路径,搜索0x7f1000bc获取资源信息
2. 分析异常根源
从调用栈可知,异常发生在Toolbar.SetNavigationContentDescription方法,说明是设置导航返回按钮的内容描述时,找不到指定的字符串资源。常见原因:
- 项目中缺失该字符串资源,或资源文件路径/命名不符合Android规范(如含特殊字符、放错目录)
- 资源类型不匹配:代码中误将整数ID当作字符串资源使用,或资源定义类型错误(如应定义为
string却设为integer) - 本地化资源缺失:多语言场景下,某语言目录的
strings.xml中缺少该资源
修复方案
- 根据找到的资源名称,检查
Resources\values\strings.xml(及对应语言目录下的strings.xml),确保资源存在且类型为string,内容正确。若缺失,手动添加:<string name="找到的资源名称">返回</string> - 检查代码中是否手动设置了导航按钮描述,确保传入的是字符串内容,或正确的资源ID(且ID对应的资源存在)
- 清理项目缓存:删除
bin、obj目录,重新编译MAUI项目,避免缓存导致的资源加载异常
内容的提问来源于stack exchange,提问作者user7862339
相关产品推荐
相关产品推荐

