【问题标题】:FirebaseApp initialization unsuccessful in Android Instant appsAndroid Instant 应用中的 FirebaseApp 初始化失败
【发布时间】:2018-02-22 15:35:40
【问题描述】:

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

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

  • 业务对象模块(它是一个库)
  • 基本功能模块
  • moduleA -feature- 模块
  • 应用模块(手机/平板模块)
  • 即时模块(即即时应用程序模块)

我的免安装应用模块可以在手机/平板电脑上编译和启动,但每次由于 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'

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

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

错误:任务“:base:processGooglePlayProductionDebugFeatureGoogleServices”执行失败。

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

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

我还尝试将插件应用到已安装应用程序的 build.gradle 文件和即时应用程序模块中,将 google-services.json 文件保留到基本模块中。该应用程序编译但我有日志:“FirebaseApp 初始化不成功”。

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

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

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

提前感谢您的帮助!

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

我的基本功能模块的依赖关系:

  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')

【问题讨论】:

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 我有同样的问题,但我不明白你的解决方案,你能解释一下吗?
  • @PabloCegarra 你能找到解决方案吗?
  • 是的...我按照基本的 Android 示例启动了一个具有单一功能的新应用程序,现在它可以工作了
  • 免安装应用让人头疼,现在我可以从 Play 商店运行我的免安装应用,但 Firebase 说初始化不成功
  • @Ezio 不抱歉,我删除了我的免安装应用,太痛苦了 xD
猜你喜欢
  • 2016-10-18
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
相关资源
最近更新 更多