我在Cordova项目中使用FCM。我在FCM Web控制台中创建了一个项目,并使用项目的包名google-services.json
生成了com.mycompany.myapp
文件。我不得不把这个文件放在两个地方才能成功编译:android项目根文件夹和'CordovaLib'子文件夹。问题是这两个副本中的每一个都应指定不同的包名:项目根文件夹的副本应指定com.mycompany.myapp
,CordovaLib
中的副本应指定com.apache.cordova
。否则,项目将无法编译。
当我手动修改文件google-services.json
中的包名称时,编译成功,但不会发送通知。
我的问题是:如何生成与Cordova一起使用的google-services.json
文件?我应该在FCM控制台(com.mycompany.myapp
或com.mycompany.myapp
)中指定哪个包名称?我可以生成适用于许多包的文件吗?
[编辑]
如果你需要知道,Cordova项目是从Sencha ExtJS6应用程序生成的,我使用“cordova-plugin-fcm”。在platforms\android
文件夹中,有一个名为CordovaLib
的文件夹,其中包含build.gradle
和src
。如果我不将google-services.json
复制到此位置,则项目将无法编译。此src
文件夹中的类具有包名com.apache.cordova
。
答案 0 :(得分:3)
正如对该问题的评论所表明的那样,解决方案是仅将google-services.json
放在项目的根目录中。我将解释为什么我遇到这个问题,以便其他人可能不会犯同样的错误。
在Firebase控制台中创建项目和应用程序时,会出现一个包含以下说明的窗口:
将Firebase添加到您的Android应用
Gradle的Google服务插件会加载您刚刚下载的google-services.json文件。修改build.gradle文件以使用该插件。
1 - 项目级build.gradle(< project \> /build.gradle):
buildscript {
依赖项{
// Add this line classpath 'com.google.gms:google-services:3.0.0'
}
}
2 - App-level build.gradle(< project> /< app-module> /build.gradle):
...
//添加到文件的底部
应用插件:' com.google.gms.google-services'
所以,我在子文件夹apply plugin ...
的{{1}}文件中添加了build.gradle
行(这是错误的,它应该放在同一个CordovaLib
文件中项目根文件夹),它不会编译unles我在该文件夹中添加build.gradle
。因此,错误的来源是不假思索地遵循上述说明。
结论:在Cordova生成的Android应用程序中,将两个修改放在项目根目录的google-services.json
文件中,并将build.gradle
仅放在根目录中。