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

.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或第三方控件在编译流程中自动生成的。

解决步骤

  1. 定位自动生成的values.xml
    打开项目输出目录(默认路径:obj\Debug\net8.0-android34.0\res\values\),找到values.xml文件,查看第6行的属性内容,确认哪个配置直接使用了#000000。

  2. 添加颜色定义到colors.xml
    在Android平台的colors.xml中添加黑色的引用定义:

    <color name="black">#000000</color>
    
  3. 替换原始色值为引用
    根据自动生成文件中的属性,找到对应的定义源头:

    • 若为第三方控件样式,检查控件配置或自定义样式,将#000000替换为@color/black;
    • 若为MAUI自动生成资源,检查XAML中是否有间接引用原始色值的绑定或样式,替换为StaticResource或@color/black;
    • 若无法定位源头,执行Clean Solution清理项目后重新生成,强制MAUI使用颜色引用而非原始值。
  4. 临时兼容配置(可选)
    若上述步骤无效,可在Android项目的.csproj文件中添加以下配置,强制AAPT2接受原始色值(仅作临时 workaround,优先推荐使用颜色引用方案):

    <PropertyGroup>
      <AndroidUseAapt2>true</AndroidUseAapt2>
      <AndroidAapt2AdditionalArgs>--allow-reserved-package-id</AndroidAapt2AdditionalArgs>
    </PropertyGroup>
    

内容的提问来源于stack exchange,提问作者r-m85

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:46:03