React Native项目google-services.json package_name匹配失败求助
别急,我遇到过好几个类似的情况,错误提示里包名是空字符串,说明Google Services插件要么没读取到你的应用包名,要么读取到的包名和google-services.json里的完全不匹配。咱们一步步来排查:
首先确认每个app模块的
applicationId配置
Google Services插件是根据build.gradle里的applicationId来匹配google-services.json的,不是AndroidManifest.xml里的package属性(虽然两者通常一致)。打开每个app模块下的build.gradle文件,找到defaultConfig块,检查applicationId的值是否和对应模块google-services.json中client.client_info.android_client_info.package_name完全一致——注意大小写、拼写,连一个空格都不能错。检查Google Services插件的配置是否正确应用
每个app模块的build.gradle文件末尾,必须添加插件应用语句:// Gradle 7+ 版本用这个 id 'com.google.gms.google-services' // 旧版本用这个 apply plugin: 'com.google.gms.google-services'同时,项目根目录的
build.gradle里要包含插件的classpath:dependencies { classpath 'com.google.gms:google-services:4.4.0' // 版本可以根据需求调整 }验证两个
google-services.json的归属是否正确
确保每个app模块的app文件夹里放的是对应自身applicationId的google-services.json,别搞混了。比如模块A的applicationId是com.myapp.main,它的google-services.json里的包名必须是这个值,模块B的applicationId是com.myapp.second,它的json也要对应。清理缓存并重建项目
缓存问题经常导致这类奇怪的错误,先执行:# macOS/Linux ./gradlew clean # Windows gradlew clean然后删除项目根目录下的
.gradle文件夹,再重新同步Gradle并构建项目。也可以尝试清理全局Gradle缓存(路径一般是~/.gradle/caches)。检查是否有Flavor/BuildType导致包名变更
如果你的项目用了productFlavors或者自定义了buildType,比如给debug版本加了applicationIdSuffix ".debug",那实际包名会变成com.myapp.main.debug,这时候google-services.json里必须有对应这个包名的client条目,或者调整Flavor配置去掉后缀,确保和json里的包名匹配。最后确认
AndroidManifest.xml的一致性
虽然插件主要看applicationId,但如果AndroidManifest.xml根标签的package属性和applicationId不一致,也可能引发问题。尽量保持两者的值完全相同。
内容的提问来源于stack exchange,提问作者erol_smsr

