Phonegap Build应用中Firebase与Push插件的集成问题
你遇到的核心问题是插件依赖的Google Play Services(GMS)版本不一致,导致推送插件和登录插件之间出现兼容性冲突。结合你的配置和问题表现,我整理了具体的修复步骤:
1. 统一Google Play Services与Android Support Library版本
你的config.xml里手动指定了GMS版本为9.0.0,但cordova-plugin-googleplus@5.3.0和cordova-plugin-firebase@0.1.20依赖的GMS版本更高,版本不匹配会直接引发运行时崩溃或登录卡顿。
修改platform下的framework配置,统一使用兼容的版本(推荐11.8.0,这个版本同时适配两款插件):
<platform name="android"> <framework src="com.google.android.gms:play-services-gcm:11.8.0" /> <framework src="com.android.support:support-v4:11.8.0" /> </platform>
同时确保你的hook脚本cordova-google-services-version-gradle-fix.js能正确强制统一所有插件的GMS版本,避免插件自行引入不同版本的依赖。
2. 修正Facebook插件的冗余配置
你的cordova-plugin-facebook4配置里存在重复的参数定义(<string>和<param>重复设置APP_ID和APP_NAME),这可能导致配置混乱,建议清理为:
<plugin name="cordova-plugin-facebook4" source="npm" spec="2.0.0"> <param name="APP_ID" value="xxxxxxxxx" /> <param name="APP_NAME" value="my first app" /> </plugin>
平台下的config-file配置可以保留,但要确保和插件参数完全一致,避免冲突。
3. 调整Firebase插件的配置与版本
cordova-plugin-firebase@0.1.20是较旧的版本,存在兼容性瑕疵,建议升级到更稳定的版本(比如0.1.27,对Phonegap Build的适配性更好):
<plugin name="cordova-plugin-firebase" spec="0.1.27" />
同时确认google-services.json的路径正确,Phonegap Build会自动读取platform/android/app/google-services.json,你的配置里的resource-file路径是正确的,但要确保文件内容完全匹配你的Firebase项目。
4. 清理并重新构建项目
- 先移除所有冲突插件,清理本地缓存:
cordova plugin remove cordova-plugin-googleplus cordova-plugin-firebase cordova-plugin-facebook4 cordova clean - 重新添加插件,确保版本和配置正确后,上传到Phonegap Build重新构建。
5. 分步测试验证
- 构建完成后先测试Google登录功能,确认无卡顿后再测试Firebase推送。
- 如果仍出现崩溃,查看Phonegap Build的构建日志,检查是否有GMS版本冲突的报错,再针对性调整版本。
内容的提问来源于stack exchange,提问作者sqlchild

