多风味编译GMS/HMS包时AGC插件校验包名不匹配报错如何解决
报错原因
这个错误是AGC插件编译时默认读取全局agconnect-services.json文件校验包名导致的,你的全局配置文件里写的是HMS风味的包名com.dise.appge.hms,编译GMS风味时实际包名是com.dise.appge.gms,匹配失败就触发了报错。
解决方案
方案一:仅对HMS风味启用AGC插件(最推荐,适合GMS风味完全不需要HMS服务的场景)
- 将存放在app模块根目录的
agconnect-services.json移动到HMS风味的专属资源目录下,路径为app/src/{你的HMS风味名称}/agconnect-services.json,例如HMS风味命名为hms的话,路径就是app/src/hms/agconnect-services.json,GMS风味的目录下不要存放该配置文件。 - 修改app模块的
build.gradle文件,把原本全局引入的AGC插件改为仅HMS风味启用:
替换原来的apply plugin: 'com.huawei.agconnect'代码为以下逻辑:
编译GMS风味时AGC插件不会运行,自然不会触发包名校验逻辑。android.productFlavors.all { flavor -> // 引号内替换为你自己的HMS风味实际名称 if (flavor.name == "hms") { plugin.apply("com.huawei.agconnect") } }
方案二:配置多套AGC配置文件(适合两个风味都需要接入HMS服务的场景)
- 登录华为AGC后台,分别给两个风味的包名
com.dise.appge.hms和com.dise.appge.gms创建对应应用,分别下载对应的agconnect-services.json配置文件。 - 将HMS包名对应的配置文件放到
app/src/hms/目录下,GMS包名对应的配置文件放到app/src/gms/目录下,不要在app模块根目录存放通用的agconnect-services.json文件,编译对应风味时会自动读取对应目录下的配置文件,不会出现包名匹配失败的问题。
临时调试规避方案(不推荐线上使用)
如果只是临时调试不想修改配置,可以在app模块的build.gradle中添加配置关闭AGC包名校验:
agc { config { verifyPackageName = false } }
注意:该方案仅跳过包名校验步骤,不会解决配置不匹配导致的后续HMS服务初始化异常问题,仅可用于临时调试,禁止用于正式打包。
内容的提问来源于stack exchange,提问作者ooWYXNoo
相关产品推荐
相关产品推荐

