.NET MAUI编译报错APT2000:期望引用却获#000000原始字符串
.NET MAUI Android编译错误APT2000排查与解决
编译错误信息
res/values/values.xml(6): error APT2000: expected reference but got (raw string) #000000. [C:\Dev\QIT\QFS\QFSMobileMAUI\QUniversalMAUISolution\Qit.QUniversal.Controls\Qit.QUniversal.Controls.csproj::TargetFramework=net8.0-android34.0] res/values/values.xml(6): error APT2000: [C:\Dev\QIT\QFS\QFSMobileMAUI\QUniversalMAUISolution\Qit.QUniversal.Controls\Qit.QUniversal.Controls.csproj::TargetFramework=net8.0-android34.0] C:\ProgramFiles\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.113\tools\Xamarin.Android.Aapt2.targets(156,3): error APT2062: failed linking references. [C:\Dev\QIT\QFS\QFSMobileMAUI\QUniversalMAUISolution\Qit.QUniversal.Controls\Qit.QUniversal.Controls.csproj::TargetFramework=net8.0-android34.0] C:\ProgramFiles\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.113\tools\Xamarin.Android.Aapt2.targets(156,3): error APT2062: [C:\Dev\QIT\QFS\QFSMobileMAUI\QUniversalMAUISolution\Qit.QUniversal.Controls\Qit.QUniversal.Controls.csproj::TargetFramework=net8.0-android34.0]
已尝试的解决方案
- 参考同类问题方案,试图在
style.xml中定位#000000并替换为colors.xml的颜色引用,但项目中无style.xml,通用Styles.xml也未使用该颜色,方案无效。
当前Android平台colors.xml内容:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#512BD4</color> <color name="colorPrimaryDark">#2B0B98</color> <color name="colorAccent">#2B0B98</color> </resources>
已排查的可能原因
- 项目缺少引用(可能性低)
- MAUI Frame控件(已排除)
- 代码中存在未显示的其他编译错误(已解决所有可见错误)
- MAUI资源文件夹缺少控件所用图片(可能性低)
- 目标Android框架(固定使用Android 14.0 API Level 34)
- MAUI XAML视图中使用了
colors.xml不存在的强调色(未找到相关使用,解决方案有相关警告)
问题
该错误的根本原因是什么?如何解决?
解决方案
原因分析
错误指向编译时自动生成的res/values/values.xml第6行直接使用了原始字符串#000000,Android资源编译工具AAPT2要求部分场景下必须使用颜色引用(@color/xxx)而非原始色值。这个values.xml并非手动创建,通常是MAUI或第三方控件在编译流程中自动生成的。
解决步骤
定位自动生成的
values.xml
打开项目输出目录(默认路径:obj\Debug\net8.0-android34.0\res\values\),找到values.xml文件,查看第6行的属性内容,确认哪个配置直接使用了#000000。添加颜色定义到
colors.xml
在Android平台的colors.xml中添加黑色的引用定义:<color name="black">#000000</color>替换原始色值为引用
根据自动生成文件中的属性,找到对应的定义源头:- 若为第三方控件样式,检查控件配置或自定义样式,将
#000000替换为@color/black; - 若为MAUI自动生成资源,检查XAML中是否有间接引用原始色值的绑定或样式,替换为
StaticResource或@color/black; - 若无法定位源头,执行
Clean Solution清理项目后重新生成,强制MAUI使用颜色引用而非原始值。
- 若为第三方控件样式,检查控件配置或自定义样式,将
临时兼容配置(可选)
若上述步骤无效,可在Android项目的.csproj文件中添加以下配置,强制AAPT2接受原始色值(仅作临时 workaround,优先推荐使用颜色引用方案):<PropertyGroup> <AndroidUseAapt2>true</AndroidUseAapt2> <AndroidAapt2AdditionalArgs>--allow-reserved-package-id</AndroidAapt2AdditionalArgs> </PropertyGroup>
内容的提问来源于stack exchange,提问作者r-m85
相关产品推荐
相关产品推荐

