.NET MAUI项目中部分PNG图片编译失败,报APT2098/APT2261错误
.NET MAUI Android编译PNG报错APT2261/APT2098的排查与解决
问题现象
- 编译.NET MAUI项目时,部分同目录结构的PNG图片编译失败:
orca_composer_divider_horizontal.9.png报APT2261错误,同时触发APT2098错误,提示无法打开drawable-hdpi-v4_orca_composer_divider_horizontal.9.png.flat文件 - 特定目录下所有图片均编译失败:
net7.0-android\lp\106\jl\res\drawable-hdpi-v4 - 同层级其他目录(如
net7.0-android\lp\333\jl\res\drawable-hdpi-v4)下的图片无异常 - 已排查项:PNG文件头正常、图片尺寸无异常、文件名无特殊字符
排查与修复步骤
1. 清理构建缓存
- 删除项目根目录下的
bin和obj文件夹 - 删除Android本地构建缓存:
%USERPROFILE%\AppData\Local\Xamarin\zips、%USERPROFILE%\AppData\Local\Xamarin\Android\Cache - 执行命令:
dotnet clean→dotnet build
2. 验证9-Patch图片合法性
- 若失败图片是
.9.png格式,用Android Studio的Draw 9-patch工具打开,确认边缘是否有完整的黑色标记线(合法9-Patch图的必要标识) - 若为普通PNG误命名,直接去掉文件名中的
.9后缀 - 若标记线断裂或超出图片范围,重新编辑修复后再编译
3. 检查资源配置
- 确认失败图片的
Build Action设置为AndroidResource - 打开
.csproj文件,检查资源项是否有异常配置(如错误的LogicalName或Link属性),示例正确配置:<ItemGroup> <AndroidResource Include="Resources\drawable-hdpi\orca_composer_divider_horizontal.9.png" /> </ItemGroup>
4. 排查依赖库问题
lp\106对应项目中的某个依赖库,可能该库的资源打包存在问题:- 定位
lp\106对应的NuGet包,尝试更新至最新版本 - 临时移除该依赖,验证编译是否恢复正常,确认是否为依赖库本身的问题
- 若为自定义库,检查库内资源的打包配置,确保9-Patch图片格式合规
- 定位
5. 调整编译参数
- 在
.csproj中添加配置,关闭APT图片压缩功能(可排除压缩过程中的格式兼容问题):
注:该参数会增加APK体积,问题解决后可按需移除<PropertyGroup> <AndroidUseAapt2>True</AndroidUseAapt2> <AndroidAapt2CompileExtraArgs>--no-crunch</AndroidAapt2CompileExtraArgs> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Noobie_learning
相关产品推荐
相关产品推荐

