Используют ли Google / Firebase Android SDK GRPC?

#android #firebase #protocol-buffers #grpc

#Android #огневая база #буферы протокола #стеклопластик #firebase #grpc

Вопрос:

Недавно я работал над интеграцией GRPC API в чувствительное к размеру приложение для Android. В API было всего несколько унарных вызовов. Я заметил, что результирующий APK имел io.grpc (613 КБ) amp; io.opencensus (178,9 КБ), который был дополнительно уменьшен до 387,2 КБ и 39,4 КБ соответственно с использованием Proguard. Я заметил, что Proguard смог удалить многие классы / методы, связанные с потоковыми вызовами, из APK. Однако я заметил, что у приложения уже был com.google.protobuf пакет, который, как я подозреваю, взят из чего-то вроде Firebase SDK.

Если Firebase SDK импортирован com.google.protobuf , почему он не нужен io.grpc для транспортировки? Использует ли он что-то еще?

Ответ №1:

Протокол protobuf используется некоторыми Firebase SDK как часть их внутренних коммуникаций. Первое, что приходит на ум, — это Firebase Analytics, но есть и другие.

Облачный Firestore SDK в Firebase использует grpc как часть своего транспортного протокола. Если вы не используете Cloud Firestore, то библиотека grpc, насколько я знаю, включена не будет.

Чтобы убедиться, что неиспользуемые методы удалены, обязательно используйте ProGuard как часть сборки вашего выпуска.

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

1. Спасибо за ответ! Мы уже используем ProGuard, но все еще имеем protobufs как часть сборки, но не GRPC. Значит ли это, что какой-то SDK внутренне использует объекты protobufs, но не использует GRPC? Я знаю, что мы используем Crashlytics, MLKit и Firebase Analytics — Использует ли кто-нибудь из них GRPC? Я проверю, используем ли мы Firestore SDK.

2. ОБНОВЛЕНИЕ: Только что проверено — в настоящее время мы используем firebase realtime-database, а не Firestore.

3. Другими сервисами, которые мы используем, являются firebase cloud messaging, мониторинг производительности, аналитика и удаленная настройка. Ни один из них не требует GRPC?

4. Google Analytics для Firebase использует protobufs для кодирования данных по своему проводному протоколу.

5. Интересно, спасибо! Я думаю, что другие сервисы также делают то же самое. (на основе наблюдений)