Слишком много библиотек Firebase добавлено в проект

#android #firebase

#Android #firebase

Вопрос:

Я использую Android Studio и хочу использовать Firebase Analytics и Firebase Ads (AdMob). Я следил за всей доступной документацией и добавил следующее в свой файл gradle уровня приложения в разделе зависимостей:

 compile 'com.google.firebase:firebase-core:9.6.1'
compile 'com.google.firebase:firebase-ads:9.6.1'
  

Однако я заметил, что в разделе «Внешние библиотеки» проекта было множество библиотек Firebase, которые я не хочу использовать (см. Изображение).

Внешние библиотеки

Я не знаю, как все это попало в рабочую область проекта, будут ли они включены в сборку, и смогу ли я просто продолжить и удалить их.

Любая помощь приветствуется.

Ответ №1:

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

Вы можете запустить:

   ./gradlew app:dependencies
  

(при условии, что ваш модуль называется «приложение»), чтобы увидеть список зависимостей. Для меня это приводит к следующему списку.

--- com.google.firebase:firebase-core:9.6.1
| --- com.google.firebase:firebase-analytics:9.6.1
| --- com.google.android.gms:play-services-basement:9.6.1
| | --- com.android.support:support-v4:24.0.0 -> 24.2.1 (*)
| --- com.google.firebase:firebase-common:9.6.1
| | --- com.google.android.gms:play-services-basement:9.6.1 (*)
| | --- com.google.android.gms:play-services-tasks:9.6.1
| | --- com.google.android.gms:play-services-basement:9.6.1 (*)
| --- com.google.firebase:firebase-analytics-impl:9.6.1
| --- com.google.android.gms:play-services-basement:9.6.1 (*)
| --- com.google.firebase:firebase-iid:9.6.1
| | --- com.google.android.gms:play-services-basement:9.6.1 (*)
| | --- com.google.firebase:firebase-common:9.6.1 (*)
| --- com.google.firebase:firebase-common:9.6.1 (*)
--- com.google.firebase:firebase-ads:9.6.1
--- com.google.android.gms:play-services-ads:9.6.1
| --- com.google.android.gms:play-services-ads-lite:9.6.1
| | --- com.google.android.gms:play-services-basement:9.6.1 (*)
| --- com.google.android.gms:play-services-base:9.6.1
| | --- com.google.android.gms:play-services-basement:9.6.1 (*)
| | --- com.google.android.gms:play-services-tasks:9.6.1 (*)
| --- com.google.android.gms:play-services-clearcut:9.6.1
| | --- com.google.android.gms:play-services-base:9.6.1 (*)
| | --- com.google.android.gms:play-services-basement:9.6.1 (*)
| --- com.google.android.gms:play-services-basement:9.6.1 (*)
| --- com.google.android.gms:play-services-gass:9.6.1
| --- com.google.android.gms:play-services-basement:9.6.1 (*)
--- com.google.firebase:firebase-analytics:9.6.1 (*)

Все библиотеки здесь соответствуют ожиданиям — это сочетание общего кода для различных частей Firebase, библиотеки аналитики из core и play-services-ads библиотеки.

Убедитесь, что вы выполнили чистую сборку с момента изменения вашего файла Gradle, и проверьте, нет ли чего-либо, что может зависеть от другого com.google.библиотеки Firebase (например, FirebaseUI).

Комментарии:

1. Я сделал то, что вы сказали, и, как ни странно, результат, который я получаю от команды ./ gradlew app: dependencies, включает зависимости от всех библиотек, которые я упомянул в своем вопросе, например, firebase-auth, firebase-crash и т. Д., Которые я не использую! Я понятия не имею, что такое FirebaseUI, о котором вы упомянули. Я просто хочу firebase analytics и ads, и я понятия не имею, как все эти другие библиотеки оказались в моем проекте. Помимо AdMob, я также добавил пакеты SDK InMobi и Leadbolt для посредничества, но я не считаю, что это создало проблему. Я очистил проект, но никаких изменений. Есть ли что-то еще, что я могу сделать?

Ответ №2:

Ненужные библиотеки Firebase на самом деле исходили из зависимости от службы Google Play (скомпилируйте ‘com.google.android.gms: play-services: 9.6.1’).

Я не очень хорошо знаком с Android и всеми этими библиотеками, поэтому я не мог видеть взаимосвязи между сервисом Google Play и библиотеками Firebase, и поэтому я не упомянул об этом в своем вопросе.

В любом случае, я удалил его, и все ненужные библиотеки Firebase были удалены из проекта. Теперь я просто добавлю конкретный API сервисов Google Play по мере необходимости для моего приложения вместо всей зависимости от Google Play.