FirebaseApp初始化在Android Instant应用程序中失败

rol*_*ndl 7 android firebase google-play-services android-instant-apps

我目前正在开发一个现有的Android应用程序,以便创建即时应用程序版本.

我的Android Studio现在分为几个模块:

  • 业务对象模块(这是一个库)
  • base -feature-模块
  • moduleA -feature-模块
  • app模块(手机/平板电脑模块)
  • 即时模块(即时应用程序模块)

我的即时应用程序模块可以在手机/平板电脑上编译和启动,但每次因Firebase问题而崩溃.我在logcat中有以下消息:

I/FirebaseInitProvider:FirebaseApp初始化失败

根据文档,Firebase库与Instant Apps兼容,但我很确定我没有将google-services.json文件移动到我项目中的正确位置......

在这里我做了什么:

  1. 我将以下类路径依赖项定义到Android Studio项目的build.gradle文件中:classpath'com.google.gms:google-services:3.1.1'

  2. 我把google-services.json文件放到我的模块库中(因为文档要求它)

现在,如果我尝试将插件(应用插件:'com.google.gms.google-services')应用到基本模块的build.gradle文件中,我无法编译.我有以下消息:

错误:任务':base:processGooglePlayProductionDebugFeatureGoogleServices'的执行失败.

>找不到包名称'com.mycompany.myapp.base'的匹配客户端

实际上,定义到google-services.json文件中的包名称是应用程序使用的一个(因为根据文档,基本库不能与安装的Android应用程序具有相同的包名称.

我还尝试将插件应用到已安装应用程序的build.gradle文件中,并应用到即时应用程序模块中,将google-services.json文件保留到基本模块中.应用程序编译,但我有日志:"FirebaseApp初始化失败".

所以我尝试将google-services.json文件移动到我的即时应用模块中,但我仍然有日志:"FirebaseApp初始化失败"

我还试图强制初始化从FirebaseApp类调用静态方法initializeApp,但日志仍然存在.

我无法在网上找到实施的例子.实际上,Google Sample存储库不使用google-services.json文件.

预先感谢您的帮助 !

编辑:这里是我的模块的依赖项:

我的base -feature-模块的依赖关系:

  implementation project(':businessobject')
  feature project(':moduleA')
  application project(':app')
Run Code Online (Sandbox Code Playgroud)

我的moduleA -feature-模块的依赖关系:

api project(':base')
api project(':businessobject')
Run Code Online (Sandbox Code Playgroud)

我的应用模块(手机/平板电脑模块)的依赖关系:

implementation (project(':base'))
implementation (project(':businessobject'))
implementation (project(':moduleA'))
Run Code Online (Sandbox Code Playgroud)

我的即时模块(即即时应用模块)的依赖关系:

implementation project(':base')
implementation project(':businessobject')
implementation project(':moduleA')
Run Code Online (Sandbox Code Playgroud)

小智 2

因为根据文档,基础库不能与已安装的 Android 应用程序具有相同的包名称。

我认为该文档有点过时了。每个“ feature ”模块需要使用不同的包名称,因为这是用来生成R 类的名称的。据我所知,您没有理由不能让“基本”功能使用与应用程序本身相同的包名称。

似乎“功能google-services”插件需要更新为使用应用程序ID而不是指定的名称(稍后将被覆盖以与应用程序ID相同)。AndroidManifest.xml

tl;dr——将“ base ”的包名称更改为“ com.mycompany.myapp ”应该可以正常工作。

  • 即时应用程序令人头疼,现在我可以从 Play 商店运行我的即时应用程序,但 firebase 说初始化失败 (2认同)