Символы Firebase не могут быть разрешены в других модулях, кроме 'app' в настройке нескольких модулей - PullRequest
0 голосов
/ 27 мая 2019

Задача

У меня есть многомодульная установка с тремя модулями: app, domain, android-base.

domain реализует авторизацию и аутентификацию с помощью Firebase, поэтому ему нужна зависимость от Firebase. Модуль app предоставляет файл google-services.json с идентификатором приложения и другими необходимыми настройками.

Когда я добавляю зависимость Firebase в свой модуль приложения, я могу легко ссылаться на символы Firebase. Когда я добавляю зависимость Firebase в другие модули, я не могу ссылаться на символы Firebase без жалобного компилятора.

Что я пробовал

Многие, многие потоки SO говорят вам включить путь к классам сервисов в build.gradle верхнего уровня, затем применить плагин внизу приложения build.gradle и затем включить зависимости Firebase в блок зависимостей. Я сделал все это. Я объявил репозиторий Google вверху, google() - первый в блоке allprojects build.gradle верхнего уровня repositories. Не помогло.

Я вставил apply plugin: 'com.google.gms.google-services' в качестве последней строки в моем domain модуле, однако это привело меня к ошибке (?) в версиях Play Services от 4.2.0 - я столкнулся с исключением NullpointerException без любая полезная информация. Поэтому, как и многие другие, кто сталкивался с этой проблемой, я пытался понизить версию Google Play Services, а также gradle, изменив пути к классам в файле build.gradle верхнего уровня. Не помогло.

Я также испытал несколько комбинаций firebase-core и firebase-auth из отчаяния. Не помогло.

Я пробовал чистые сборки и аннулирование кешей. Не помогло.

Зависимость добавлена ​​в путь к классам. Это просто не разрешается ни для какого другого модуля, кроме «приложения». Я что-то пропустил?

код

Домен build.gradle

dependencies { ...
    implementation 'com.google.firebase:firebase-core:16.0.9'
    implementation 'com.google.firebase:firebase-auth:17.0.0' ...
}

Приложение build.gradle

dependencies {
    // no firebase dependency here
    implementation project(path: ':domain')
}

apply plugin: 'com.google.gms.google-services'

Верхний уровень build.gradle

buildscript {
    ext.kotlin_version = '1.3.31'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.0.2'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...