Как обрабатывать зависимости gradle, которые явно перезаписывают друг друга - PullRequest
0 голосов
/ 12 июня 2019

Я занимаюсь разработкой приложения с использованием Google Firebase (аутентификация и облачный FireStore). Следуя документации , я должен добавить следующую зависимость в мой файл уровня приложения build.gradle для доступа к базе данных облачного пожарного хранилища

implement 'com.google.firebase:firebase-admin:6.8.1'

Однако этот подход приводит к следующей ошибке при компиляции:

"Процессоры аннотаций теперь должны быть явно объявлены. Обнаружено, что следующие зависимости от пути к классам компиляции содержат процессор аннотаций. Добавьте их в конфигурацию annotationProcessor. - auto-value-1.4.jar (com.google.auto.value: auto-value: 1.4) Или же установите android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true, чтобы продолжить предыдущее поведение. Обратите внимание, что эта опция устарела и будет удалена в будущем. Подробнее см. https://developer.android.com/r/tools/annotation-processor-error-message.html. "

Я попытался исправить проблему, как описано на связанном веб-сайте в сообщении об ошибке, заменив зависимость на:

compileOnly 'com.google.firebase:firebase-admin:6.8.1'
annotationProcessor 'com.google.auto.value:auto-value:1.4'

Это удаляет старую ошибку, но вызывает другую проблему, которую я не смог исправить. Добавление зависимости 'com.google.firebase:firebase-admin:6.8.1' приводит к тому, что некоторые методы из зависимости 'com.google.firebase:firebase-auth:17.0.0' перестают работать.

"ошибка: не удается найти метод символа getCurrentUser ()
ошибка: не удается найти метод символа signInWithCredential (AuthCredential) "

Моей первой идеей было то, что зависимость администратора включает в себя те же классы, что и у auth. Тем не менее, я не слишком много знаю о поведении gradle в подобных ситуациях и о том, как это исправить.

Ниже приведены мои зависимости из файла build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:customtabs:28.0.0'
    implementation 'com.facebook.android:facebook-login:[5,6)'
    implementation 'com.android.support:support-media-compat:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.firebase:firebase-auth:17.0.0'
    implementation 'com.google.firebase:firebase-core:16.0.9'      
    compileOnly 'com.google.firebase:firebase-admin:6.8.1'
    annotationProcessor 'com.google.auto.value:auto-value:1.4'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-vector-drawable:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

1 Ответ

1 голос
/ 12 июня 2019

Зависимость firebase-admin не предназначена для использования в клиентских приложениях.Это для использования с кодом сервера.Он может конфликтовать с клиентскими SDK Firebase, предназначенными для Android.Если вы хотите использовать firebase-admin, вам понадобится бэкэнд-компонент для вашего приложения и вызовите его там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...