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

Xamarin.Android迁移AndroidX后出现R8编译失败异常如何解决

问题根因

该R8编译失败的核心触发点是com.google.android.gms.actions.ItemListIntents类在编译压缩阶段出现解析异常,Xamarin.Android项目迁移AndroidX后出现该问题,90%以上场景由三类原因导致:GMS(Google Play服务)依赖版本不匹配、旧版非AndroidX依赖残留、R8混淆规则缺失。

排查解决步骤
  • 统一GMS依赖版本
    打开Android项目的NuGet包管理面板,检查所有Xamarin.GooglePlayServices.*前缀的包,全部升级到适配AndroidX的稳定版本,禁止同系列GMS包跨大版本混用(例如部分包用71.x版本、部分用118.x版本)。其中Xamarin.GooglePlayServices.Actions是ItemListIntents类的直接归属包,优先确认该包版本和项目内其他AndroidX、GMS包版本对齐。
  • 清理冗余编译缓存
    关闭开发IDE,手动删除Android项目目录下的bin、obj文件夹,同时清理本地NuGet全局缓存中残留的旧版本GMS、Support包文件,重新打开项目还原NuGet依赖后尝试首次编译,排除旧缓存被错误加载的问题。
  • 补全R8/ProGuard配置规则
    如果对齐版本后仍报错,在Android项目的ProGuard配置文件(默认文件名为proguard.cfg)中添加如下规则,避免R8压缩阶段误处理GMS相关类:
    -keep class com.google.android.gms.actions.** { *; }
    -dontwarn com.google.android.gms.actions.**
    
    添加规则后需要确认配置文件的生成操作属性设置为ProguardConfiguration,确保项目开启R8压缩时自定义规则能被正常读取。
  • 清理残留旧版Support依赖
    在包管理器控制台执行依赖检查命令,排查项目内是否残留未迁移的旧版Xamarin.Android.Support.*包:
    Get-Package | Where-Object {$_.Id -like "*Xamarin.Android.Support*"}
    
    如果存在残留包全部卸载,统一替换为对应的AndroidX版本,避免旧版Support包和AndroidX包共存引发类冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:48:18