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

升级Xamarin.Forms 5.0.0.2622后styles.xml编译错误求助

问题分析

升级Xamarin.Forms 5.0.0.2622后出现的APT2260、APT2062错误,核心诱因有三点:

  1. Xamarin.Forms 5.x在targetSdkVersion 33(monoandroid13.0)环境下,自动生成的styles.xml未给AppCompat相关属性添加android:前缀,而Android 13的APT工具对属性命名空间要求严格,导致无法识别colorAccent等属性;
  2. Xamarin.Forms与Xamarin.AndroidX.AppCompat等依赖包版本不匹配,导致主题资源链断裂,无法找到Theme.AppCompat.DayNight.DarkActionBar这类样式;
  3. 项目资源生成逻辑异常,obj目录下自动生成的样式文件未正确继承AppCompat的命名空间,引发解析冲突。
解决方案

1. 统一锁定AndroidX依赖版本

Xamarin.Forms 5.0.0.2622需要匹配特定版本的AndroidX包,在Android项目根目录新建或修改Directory.Packages.props文件,添加以下配置强制统一版本:

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Xamarin.AndroidX.AppCompat" Version="1.6.1" />
    <PackageVersion Include="Xamarin.AndroidX.Core" Version="1.10.1" />
    <PackageVersion Include="Xamarin.Forms" Version="5.0.0.2622" />
    <PackageVersion Include="Xamarin.CommunityToolkit" Version="2.0.6" />
  </ItemGroup>
</Project>

然后执行清理缓存并还原包:

# Windows终端
dotnet nuget locals all --clear
dotnet restore

# Mac终端
nuget locals all -clear
dotnet restore

2. 修正自定义styles.xml的命名空间与主题继承

打开Android项目的Resources/values/styles.xml,确保根节点添加Android命名空间,并明确继承AppCompat主题,所有样式属性加上android:前缀:

<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="MainTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
    <item name="android:colorAccent">@color/Accent</item>
    <!-- 其他自定义样式属性均需添加android:前缀 -->
  </style>
</resources>

同时删除Resources/values-vXX目录下可能存在的冲突样式文件,避免资源覆盖。

3. 禁用自动生成的样式文件(根治手动修改obj目录的问题)

在Android项目的.csproj文件中添加以下配置,阻止Xamarin.Forms自动生成冲突的styles.xml:

<PropertyGroup>
  <GenerateAppCompatResources>false</GenerateAppCompatResources>
</PropertyGroup>

之后手动维护styles.xml中的所有样式,确保属性完整性。

4. 校验AndroidManifest.xml的主题配置

确保AndroidManifest.xml中application节点的theme指向自定义的MainTheme:

<application android:label="YourAppName" android:theme="@style/MainTheme">
</application>

5. 彻底清理重建项目

执行以下步骤消除残留缓存:

  • 删除项目根目录下的bin、obj文件夹;
  • 删除本地NuGet缓存目录中Xamarin.Forms、AndroidX相关包(Mac路径:~/.nuget/packages;Windows路径:C:\Users\<你的用户名>\.nuget\packages);
  • 重启IDE,重新还原NuGet包并执行重建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:57:22