升级Xamarin.Forms 5.0.0.2012后Xamarin.Android应用无法编译报错
问题原因
该报错是Xamarin.Forms 5.0.0.2012版本的已知bug,该版本内置的Android资源样式中,iconGravity属性错误使用了不在枚举范围内的textEnd值,触发APT2资源校验失败,连带触发资源链接失败报错。两个报错的关联逻辑是:APT2259是根本错误,APT2061是前者导致的衍生错误。
修复方案
- 方案一:升级Xamarin.Forms版本
官方在后续版本已经修复该问题,直接将所有项目引用的Xamarin.Forms NuGet包升级到5.0.0.2196及以上稳定版,升级完成后清理解决方案,删除Android项目的bin、obj文件夹后重新编译即可。 - 方案二:手动补充属性枚举值(适配无法升级版本的场景)
若因业务兼容要求暂时不能升级Xamarin.Forms版本,可手动添加自定义属性覆盖系统校验规则:- 打开Xamarin.Android项目,进入
Resources/values目录 - 新建名为
attrs.xml的文件,写入以下内容:
<?xml version="1.0" encoding="utf-8"?> <resources> <attr name="iconGravity"> <flag name="start" value="1" /> <flag name="textStart" value="2" /> <flag name="end" value="4" /> <flag name="textEnd" value="8" /> </attr> </resources>- 保存文件后重新编译项目即可。
- 打开Xamarin.Android项目,进入
- 方案三:回退Xamarin.Forms版本
临时将Xamarin.Forms版本回退到5.0.0.2012之前的稳定版(如5.0.0.1931),也可规避该问题。
内容的提问来源于stack exchange,提问作者Pediredla Arun Kuar
相关产品推荐
相关产品推荐

