#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.