Android即时应用中的FirebaseApp初始化失败

时间:2017-10-10 12:12:06

标签: android firebase android-instant-apps google-play-services

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

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

  • 业务对象模块(图书馆)
  • base -feature- module
  • moduleA -feature- module
  • app模块(手机/平板电脑模块)
  • 即时模块(即时应用程序模块)

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

  

I / FirebaseInitProvider:FirebaseApp初始化失败

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

这就是我所做的:

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

    < / LI>
  2. 我将google-services.json文件放入我的模块库中(因为文档要求)

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

      

    错误:任务执行失败&#39;:base:processGooglePlayProductionDebugFeatureGoogleServices&#39;。

         

    &GT;找不到包名称&com; mycompany.myapp.base&#39;

    的匹配客户

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

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

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

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

    我在网上找不到实施的例子。实际上,Google Sample repository不使用google-services.json文件。

    提前感谢您的帮助!

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

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

      implementation project(':businessobject')
      feature project(':moduleA')
      application project(':app')
    

    我的moduleA -feature- module的依赖关系:

    api project(':base')
    api project(':businessobject')
    

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

    implementation (project(':base'))
    implementation (project(':businessobject'))
    implementation (project(':moduleA'))
    

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

    implementation project(':base')
    implementation project(':businessobject')
    implementation project(':moduleA')
    

1 个答案:

答案 0 :(得分:2)

  

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

我认为文档有点过时了。每个“功能”模块都需要使用不同的包名称,因为这是用于生成 R类的名称的内容。 AFAIK没有理由不能让“ base ”功能使用与应用程序本身相同的包名。

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

tl; dr ---将“ base ”的包名更改为“ com.mycompany.myapp ”应该可以解决问题。