Зависимость Firebase в библиотеке Android: невозможно вызвать метод get () для нулевого объекта - PullRequest
0 голосов
/ 28 мая 2018

У меня возникла проблема со сборкой при добавлении зависимости firebase в библиотеку Android.

Моя настройка выглядит следующим образом

/ settings.gradle

include ':module-lib'
include ':module-app'

/ build.gradle

buildscript {
  dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath 'com.google.gms:google-services:4.0.0'
  } 
}

/ module-lib / build.gradle

apply plugin: 'com.android.library'
android {
   ...
}
dependencies{
  api "com.google.firebase:firebase-config:16.0.0"  
}

/ module-app / build.gradle

apply plugin: 'com.android.application'
android {
   ...
}
dependencies {
  implementation project(':module-lib') 
}
apply plugin: 'com.google.gms.google-services'

Краткий журнал:

$ ./gradlew clean build

Starting a Gradle Daemon, 1 busy and 2 stopped Daemons could not be reused, use --status for details

Parallel execution is an incubating feature.

> Configure project :module-app
Detected alwaysUpdateBuildId set to false while obfuscation is enabled. This may result in obfuscated stack traces in Crashlytics.
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)

> Task :module-lib:compileDebugAidl FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Failed to notify dependency resolution listener.
> Cannot invoke method get() on null object
> Cannot invoke method get() on null object

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 18s
13 actionable tasks: 8 executed, 5 from cache

Вы можете найти полную трассировку стека исходной ошибки в this pastebin

Забавная вещь заключается в том, что module-lib содержит только заполнитель, пустой и бесполезный класс.Если я удалил зависимость firebase из module-lib и переместил ее в module-app, сборка работает нормально.

Я не использую Android Studio, так что это чисто Gradle и / или плагин и / илипроблема зависимостей.

Также обратите внимание, что

./gradlew clean       // Always succeds 
./gradlew build       // Sometimes works with above error 
./gradlew clean build // Always fails with above error

Это также происходит с любой зависимостью firebase-*, включенной в модуль, который применяет подключаемый модуль библиотеки com.android.library.

Дополнительная информация о среде

$ ./gradlew -version

------------------------------------------------------------
Gradle 4.7
------------------------------------------------------------

Build time:   2018-04-18 09:09:12 UTC
Revision:     b9a962bf70638332300e7f810689cb2febbd4a6c

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_162 (Oracle Corporation 25.162-b12)
OS:           Mac OS X 10.13.4 x86_64

Любые подсказки или советы приветствуются :)

Спасибо!

1 Ответ

0 голосов
/ 19 июня 2018

Обновление плагина google-services до версии 4.0.1 устранило проблему.

На странице журнала изменений Firebase SDK: https://firebase.google.com/support/release-notes/android

enter image description here

Другими словами, измените это:

classpath 'com.google.gms:google-services:4.0.0'

на это:

classpath 'com.google.gms:google-services:4.0.1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...