荣耀30i系统更新后Xamarin.Forms开发的HMS安卓应用启动崩溃求助
问题根因
报错日志显示java.lang.NoClassDefFoundError: Failed resolution of: Lcom/huawei/hms/framework/common/NetworkUtil,核心原因是项目集成的HMS系列NuGet包版本不兼容:
你当前使用的Huawei.Hms.Base、Huawei.Hms.Hwid为6.1.0.302版本,属于HMS Core 6.x系列,而Huawei.Hms.NetworkGrs还停留在5.0.3.300的5.x旧版本。旧版NetworkGrs依赖的NetworkUtil公共类,在新版Base包中已经被调整移除,就会触发类找不到的崩溃。
两台设备表现不同的原因是:华为P40 lite系统内置的HMS Core版本较低,自带了对应旧版本的依赖类可以兼容调用;而荣耀30i更新系统后内置的HMS Core版本同步升级,不再向下兼容旧版本GRS组件的依赖调用。
解决方案
- 统一HMS组件版本:将Huawei.Hms.NetworkGrs升级到和Base、Hwid对齐的6.x版本,保证所有HMS相关NuGet包版本号一致,这是最优先的解决方式。
- 若暂时无法升级GRS包,可将所有HMS组件统一降级到5.x版本:把Huawei.Hms.Base、Huawei.Hms.Hwid、Huawei.Hms.Push都降到和NetworkGrs匹配的5.0.x系列版本即可。
- 版本调整完成后,先删除项目的bin、obj缓存文件夹,再重新构建打包,避免旧缓存影响构建结果。
- 若调整后仍出现同类报错,可在Android项目的混淆配置文件proguard-rules.pro中添加如下规则,避免HMS相关类被误混淆:
-keep class com.huawei.hms.** {*;} -keep interface com.huawei.hms.** {*;}
内容的提问来源于stack exchange,提问作者Jack The Healer
相关产品推荐
相关产品推荐

