Android Library引入Firebase依赖报错:Cannot invoke method get() on null object
我来帮你分析这个问题并给出解决方案——这个错误是因为com.google.gms.google-services插件的处理逻辑和Library模块的Firebase依赖配置不匹配导致的。
问题根源
google-services插件主要负责解析Firebase依赖并关联google-services.json配置,但旧版本的插件(比如你用的4.0.0)在处理仅Application模块应用插件,但Library模块引入Firebase依赖的场景时,会出现依赖解析的空指针问题。插件无法正确识别Library模块中的Firebase依赖,进而抛出Cannot invoke method get() on null object错误。
解决方案
按照以下步骤修改配置:
1. 在Library模块中也应用google-services插件
打开/module-lib/build.gradle,在apply plugin: 'com.android.library'之后添加插件应用:
apply plugin: 'com.android.library' // 新增这一行 apply plugin: 'com.google.gms.google-services' android { ... } dependencies{ api "com.google.firebase:firebase-config:16.0.0" }
2. 确保版本兼容性
你当前使用的版本组合是兼容的,这里帮你确认下官方推荐的匹配关系:
- AGP 3.1.2 搭配 Gradle 4.7 是官方适配的组合
google-services:4.0.0对应 Firebase 16.x 版本是完全匹配的
3. 确认google-services.json的位置
google-services.json只需要放在module-app的src/main目录下即可,Library模块不需要这个文件,插件会自动从Application模块继承配置信息。
验证修改
执行以下命令重新构建项目:
./gradlew clean build
为什么移到App模块就正常?
当你把Firebase依赖直接放在App模块时,google-services插件能直接处理这些依赖——因为插件本身就应用在App模块中,依赖解析的完整流程可以正常完成。而放在Library模块时,插件没有处理Library的依赖项,导致解析过程中出现空对象调用的异常。
内容的提问来源于stack exchange,提问作者Robert Estivill

